2013-04-18 3 views
9

누구나 C#에서 사용자 지정 Windows 자격 증명 공급자를 만들었습니까? Windows SDK에있는 샘플은 모두 C++로되어 있습니다. 내가 한 초기 검색은 가능할 수도 있지만 확인한 사람을 찾지 못했음을 나타냅니다.C#을 사용하는 Windows 자격 증명 공급자

+1

나는이 관리에서 작동하는지 모르겠어요 코드 또는 아닙니다. 왜 관리 코드에이 코드를 쓰길 원하지만 그 코드를 시도하기는 어렵지 않을지 질문합니다. 모든 Win32 함수에 대해 많은 P/Invoke 정의를 작성해야합니다. C++에 대한 지식에 따라보다 적절한 언어로 작성하는 것보다 시간을 낭비 할 수 있습니다. –

답변

10

+1의 경우 pgina입니다. Cody가 말한 것처럼 Credential Provider를 만드는 데 사용할 수있는 관리되는 API는 없으므로 pInvoke 경로로 이동하려면 자격 증명 제공자를 파악하는 것보다 pInvoke 문제를 해결하는 데 더 많은 시간이 소요됩니다.

여기서 pGina는 멋진 플러그인 아키텍처와 플러그인이 관리 코드로 작성되었다는 것을 도울 수 있습니다. here 차트를 참조하십시오. pGina는 LogonUI (네이티브 코드)와의 통신을 처리하지만 실제 인증을 수행하기 위해 플러그인 (관리)에 의존합니다. 이는 실제로 원하는 것을 제어합니다. 그렇지 않으면 자신의 자격 증명 공급자가 필요하지 않습니다.

2

pGina를 확인하십시오. 나는 그걸로 놀고 있었고 그것은 내 Windows 8에서 제대로 작동하는 것 같습니다, 그래서 그것도 전에 모든 Windows 버전에서 잘 작동합니다. 그래도 꽤 초기 단계에 머물러 있으며 프로젝트의 네이티브 절반을 탐구하지 않고도 사용자 지정 UI를 만들 수있는 방법을 볼 수 없습니다. 희망이 도움이!

[편집] 코디 그레이의 의견을 다시 읽으십시오. 명확히하기 위해, pGina는 실제로 당신을 위해 작성된 원시 코드입니다. 하지만 네, 아마도 C++로 시작하는 것이 더 많은 컨트롤을 가지고있을 것입니다. 그렇지만 그것이 어떻게 제공되는지에 관해서 너무 많은 컨트롤이 필요 없다면 pGina가 갈 방법입니다.

4

Windows Vista 이상의 새로운 CredentialProvider 모델은 COM을 기반으로합니다. 즉, 올바른 COM 인터페이스를 구현할 수 있어야합니다.

이전 GINA 모듈은 COM 인터페이스 대신 DLL 진입 점과 함수 포인터를 사용했기 때문에이를 기반으로 이전 GINA 모델보다 쉽게 ​​빌드해야합니다.

는 닷넷의 능력으로 간 운영 COM과 함께, 그것은 쉽게해야 감안할 때 :

  1. 가 ICredentialProvider 인터페이스의 C#을 정의를 구축하고 올바른 COM 추가 올바른 GUIDS와 속성을
  2. Windows에서 새 CredentialProvider을 등록 할 수있는 올바른 레지스트리 키를 추가 RegAsm을 함께
  3. 을 새로운 어셈블리를 등록 자격 증명 공급자 상기 ICredenitalProvider를 구현하고 대해 ComVisible (참)로 표시되어 클래스
  4. 구축 (당신은 모든 걸 할 경우 마이크로 소프트 \ 윈도우 \ CurrentVersion을 \ 인증 \ 자격 증명 공급자 \ 소프트웨어)

, 당신은 C#으로 작성된 작업 자격 증명 공급자를해야합니다