2016-12-03 17 views
2

작은 웹 서버에서 협상 (적어도 Kerberos 부분)을 구현하려고합니다. 클라이언트에게 Kerberos Negotiate Authorization 헤더를 보내는 방법을 알아 냈습니다. 데이터를 디코딩하는 방법을 알아 냈습니다 (ASN.1). 이것을 WindowsIdentity으로 바꾸는 방법을 알 수 없습니다. KerberosReceiverSecurityToken에서 어떻게 할 수 있는지에 대한 일반적인 아이디어를 얻을 수 있지만 NegotiateReceiverSecurityToken과 같은 것을 찾을 수는 없습니다. 나는 많은 DLL을 파헤쳐 왔고 IIS/.NET이 협상 헤더를 처리하는 곳을 이해할 수 없다..NET에서 Negotiate를 처리하는 방법은 무엇입니까?

나는 가정 나는 내가 WindowsIdentity을 만들 수있는 토큰을 얻을 수 QuerySecurityContextToken를 사용하여 다음 AcceptSecurityContext/Negotiate를 호출 할 수있는이있는 SSPI 컨텍스트를 취득 SspiWrapper.AcquireDefaultCredential("Negotiate", CredentialUse.Inbound)으로 뭔가를 할 것이라고 (나는 SspiWrapper 내 자신이 있다면).

그러나 KerberosReceiverSecurityToken은 매우 복잡한 프로세스처럼 보입니다. 어떻게 할 것인지 또는 Authorization 헤더 페이로드의 일부분을 넣을 것인지에 대한 아이디어가 없으면 아무데도 가지 않고도 한 달 동안 머리에 맞을 수 있습니다.

(물어 보거나 답변하기 전에 기본 제공되는 협상 논리를 사용하는 데 관심이 없습니다. 찾을 수만 있다면 배우고 배우 겠지만 FAR을 사용하기 위해 노력하고 있습니다. 긴. 그리고 나는 그와 끝났어요.)

+2

Katana/Kestrel 웹 서버 소스 코드 repo를 참조하여 Microsoft가 제공하는 네이티브 API를 알아야합니다. 오히려 제가 닫으려는 광범위한 질문입니다. 자신 만의 사이트를 만들 계획이라면 Microsoft는 Google에서 더 잘 할 수있는 사이트에 표준 문서를 게시했습니다. –

+0

@LexLi 내 질문에 어떤 영향이 있습니까? 내 서버로 보낸 데이터를 클라이언트에서 가져 와서 WindowsPrincipal으로 변환하려고합니다. 나 한테는 특이한 것 같아. –

+1

프로토콜 클라이언트 구현은 거대한 프로젝트이며 스택 오버플로 (Stack Overflow) 스레드가 제공하는 얼마를 기대합니까? –

답변

2
  1. 가 핸들
  2. 전화 Secur32.AcceptSecurityContext 보안을 통과하는 핸들과 토큰
  3. 전화 Secur32.QuerySecurityContextToken 전달을 얻기 위해 토큰 들어오는 응답
  4. 전화 Secur32.AcquireCredentialsHandle 구문 분석 컨텍스트
  5. 는이 단계의 대한 질문이있는 경우, 내가 자세히 설명 할 수있는 출력 형태의 4 단계

를 사용하여 new WindowsIdentity(hToken) 구축 및/또는 일부 샘플 코드를 제공합니다.

+0

답변 해 주셔서 감사합니다. 시간이 걸리면 문제 해결에 사용하겠습니다. 내가 너에게 돌아갈거야. –