동일한 인트라넷 전용 상자에 두 번째 IIS 호스팅 WCF 서비스를 호출하는 IIS 8 호스트 웹 사이트가 있습니다. (비활성화 다른 모든) 두 응용 프로그램 FQDN과 함께 사용하면 WCF TransportCredentialOnly 보안이 깨집니다.
- Windows 인증.
- IIS AppPool 사용자가 호스팅하는 WCF 서비스 사이트. 이 같은
바인딩 외모 :
<binding name="BasicHttpBinding_ServiceName" sendTimeout="00:05:00">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
웹 사이트는 모든 것이 잘 작동 주소의 NetBIOS 또는 IP를 사용하여 서비스에 액세스합니다. 그러나 이제 프로덕션 환경 (http://services.company.local 및 http://web.company.local)에 대해 FQDN을 사용하려고합니다. 즉시 나는 FQDN을 통해 WCF 서비스를 호출하려고 할 때, 나는 다음과 같은 예외 메시지와 함께 uauthorized 401가 나타납니다
MessageSecurityException를 : HTTP 요청은 '협상'클라이언트 인증 방식으로 인증되지 않은 것입니다. 서버에서 수신 한 인증 헤더는 '협상, NTLM'입니다.
내가 NTLM에 clientCredentialType을 변경없이 성공 (같은 오류 메시지와 함께 (다른 SO 질문에 제안대로)가 IIS 인증에서 제공 협상을 제거하려고했습니다, 서버에서받은 단지 헤더는 NTLM '이었다 "대신"Negotiate, NTLM "을 사용합니다. 다른 연구 결과에 따르면이 사이트 용으로 만든 두 하위 도메인과 관련된 SPN의 문제 일 수 있지만 확실하지 않습니다. 1. 이러한 도메인에 대한 SPN 확인 방법, 2. SPN이 무엇이되어야하는지, 3. 커널 모드 인증을 사용하고있는 것을 고려할 때 여전히 관련이 있다면