테스트 Windows Server 2012 도메인이 있습니다. 이 도메인의 구성원 인 두 대의 컴퓨터가 있습니다.WCF 상호 운용성 Kerberos SPNego 사용 웹 서비스
하나의 컴퓨터가 Oracle Corporation에서 개발 중이며 가상 컴퓨터에서 Linux 버전을 실행 중입니다. 이 컴퓨터는 아마도 IBM WebSphere가 호스팅하는 SPNego Kerberos 인증 웹 서비스를 호스팅합니다.
다른 컴퓨터는 Microsoft 가상 컴퓨터에서 호스팅되는 Windows XP 클라이언트입니다.
Kerberos를 사용하여 사용자를 인증하기 위해 Active Directory 내부에 SPN을 만들었습니다.
그런 다음 브라우저를 사용하여 웹 서비스를 테스트했습니다. WSDL 주소는 SOAP 데이터를 완벽하게 가져 왔습니다.
Kerberos가 해제되어 클라이언트 프록시 코드가 WCF 4.0 클라이언트에 통합되어 인증 테스트를 위해 다시 켜질 수 있습니다. 클라이언트 프록시에서 제공하는 방법을 사용하여 웹 서비스에 연결하려고 할 때
그러나, 보안과 관련된 모든 종류의 오류가 제기되고있다 : 아래
The remote HTTP server did not satisfy the mutual authentication requirement. The remote server returned an error: (405) Method Not Allowed.
, 클라이언트 측 응용 프로그램입니다. 사용 설정 파일은 웹 서비스에 연결 :
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://oag:8080/pos/GetStoreConfigurationService"
binding="wsFederationHttpBinding"
bindingConfiguration="wsFederationHttpBinding_ESLGetStoreConfigurationBinding"
behaviorConfiguration="ServiceBehavior"
contract="ESLGetStoreConfigurationPortType"
name="wsFederationHttpBinding_ESLGetStoreConfigurationPort" >
<identity>
<servicePrincipalName value="http/oag:8080"/>
</identity>
</endpoint>
</client>
<bindings>
<customBinding>
<binding name="UsernameBinding">
<binaryMessageEncoding />
<security authenticationMode="Kerberos"
requireSecurityContextCancellation ="false"
requireSignatureConfirmation="false"
messageProtectionOrder ="EncryptBeforeSign"
requireDerivedKeys="false"
enableUnsecuredResponse="true"
allowInsecureTransport="true"
securityHeaderLayout="Lax" >
</security>
<httpTransport authenticationScheme="Negotiate"
transferMode="Buffered"
maxReceivedMessageSize="67819876"/>
</binding>
</customBinding>
<wsFederationHttpBinding>
<binding name="wsFederationHttpBinding_ESLGetStoreConfigurationBinding" >
<security mode="Message">
<message negotiateServiceCredential="true"
establishSecurityContext="false"
algorithmSuite="Basic128" >
<issuer address="http://192.168.100.25"
bindingConfiguration="UsernameBinding"
binding="customBinding">
<identity>
<dns value="WIN-7TN6ALB4TVK.oag-dev.sei"/>
</identity>
</issuer>
</message>
</security>
</binding>
</wsFederationHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Identification"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<system.web>
<identity impersonate="false" userName="oag-server" password="Password!"/>
</system.web>
네트워크 자격 증명을 제공
또한 코드에서 이루어졌다; 그러나 아아, 아무 소용이 없습니다.
감사합니다.
귀하의 신속하고 간결한 응답에 감사드립니다. 오라클에 문의하여 사용중인 SOAP 버전을 정확히 확인하고 추가로 반영 할 수 있도록이 게시물을 알려줄 것입니다. –