1

Active Directory에서 제어되는 도메인에서 특정 ID가있는 서버에서 Windows 서비스를 실행하고 있습니다.현재 프로세스 ID 및 인증 정보 얻기

이 서비스 ID는 TCP를 통해 동일한 네트워크에있는 다른 서비스로 보내야합니다. 예를 들어 자체 프로토콜과 특정 토큰을 사용하여 대상 서버에서 호출자를 인증해야합니다. 마찬가지로 Windows 인증이 WCF 또는 Windows Forms 응용 프로그램과 어떻게 작동하는지 .

AD/Windows 인프라를 사용하여 자체 토큰 서비스를 구현해야만하는 방식으로 .NET 4.5 및 C#을 사용하는 방법이 있습니다.

+0

여기서는 [Active Directory의 ID 관리] (http://msdn.microsoft.com/en-US/security/aa570351.aspx)를 시작합니다. 자신 만의 것을 구현하지 말고 필요에 맞는 것을 찾으십시오. 이것을 처음부터 정확하게 쓰는 것은 매우 어렵습니다. – oleksii

+0

예, WIF/ADFS에 대해 살펴 보았습니다. 그러나 Kerberos 티켓을 생성하고 유효성 검사를 위해 서비스에 보내는 것과 같이 좀 더 직관적으로 생각했습니다. 그러나 C#에서이를 수행하는 방법을 찾을 수 없었습니다. 가능한지 확실하지 않은 경우) ... –

답변

0

IIS 또는 WCF의 기본 제공 인증을 활용하는 것이 가장 쉽습니다. TCP 소켓이 실제로 필요하다면 직접 인증을 구현해야한다고 생각합니다. Kerberos의 작동 방식을 이해한다면 개념적으로 어렵지 않지만 호출 할 모든 기능의 세부 사항을 확인하는 데는 시간이 걸립니다. MSDN에는 바른 개요 here가 있습니다. 또한, 나는 이들에 대한 C# 래퍼를 인식하지 못하기 때문에 아마도 모든 호출을 호출 할 필요가있을 것이다. 그 부분을 관리되는 C++로 작성하는 것을 고려하십시오.

2

bmm60과 같이 SSPI를 사용하여이 문제를 해결할 수있었습니다. SSPI를 사용하면 Kerberos 및 NTLM을 사용하여 인증 할 수 있습니다. SSPI를로는 C++ 관리되는 어셈블리가있다

는이 문서에서 호출 http://msdn.microsoft.com/en-us/library/ms973911.aspx

같은 문서는 인증 프로세스가 작동하는 방법 좋은 설명이있다.

여기에, (그러나 조금 더 어려운 사용하는) 너무 C#을 래퍼를 발견했습니다 http://www.pinvoke.net/default.aspx/secur32.initializesecuritycontext

는 기본적으로, 래퍼 기능을 제공하는InitializeSecurityContext에와 AcceptSecurityContext를 윈도우 함수를 사용합니다.