2011-10-28 2 views
2
여기

는 시나리오WCF SAML 1.1 클라이언트 문제

3) WCF 클라이언트가 SAML을 집어 응답 헤더는 자바 기반 환경에서 호스팅되는 비즈니스 웹 서비스

STS 및 웹 서비스에 대한 호출을 토큰. 1)과 2) 제대로 작동합니다. 즉, SOAP 헤더와 본문이 올바르게 설정된 상태에서 STS가 예상대로 응답하는 것을 볼 수 있습니다.

이제 문제는 STS에서 응답을받은 후 WCF 클라이언트가 보안 컨텍스트 토큰에 대한 요청을 업무용 웹 서비스에 보내면 물론 실패하고 그 방법과 이유를 알지 못합니다.

이것은 클라이언트에 대한 내의 app.config입니다 :

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<system.serviceModel> 
<bindings> 
<wsFederationHttpBinding> 
<binding name="RegistryServiceBinding"> 
    <security mode="TransportWithMessageCredential"> 
    <message issuedTokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#samlv1.1" 
     negotiateServiceCredential="False" establishSecurityContext="false"> 
     <issuer address="https://my-sts-ip/idp-ws/services/BasicSAMLIssuer" 
     binding="customBinding" bindingConfiguration="STSBinding" /> 
    </message> 
    </security> 
</binding> 
</wsFederationHttpBinding> 

<customBinding> 
<binding name="STSBinding"> 
    <security allowInsecureTransport="False" 
    authenticationMode="UserNameOverTransport" 
    requireSignatureConfirmation="false" 
    messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"> 
    </security>   
    <textMessageEncoding messageVersion="Soap12WSAddressing10" /> 
    <httpsTransport/> 
</binding>  
</customBinding> 
</bindings> 

<client> 
    <endpoint address="https://my-ws-ip/soap/RegistryStoredQuery" 
    binding="wsFederationHttpBinding" bindingConfiguration="RegistryServiceBinding" 
    contract="IXDSRegistry" name="RegistrySTS" /> 
</client> 
</system.serviceModel> 
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" /> 
</startup> 
</configuration> 

그리고 이것은 WCF 클라이언트 (약칭 함)는 STS에서 SAML 토큰을받은 후 보내는 것입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" 
      xmlns:a="http://www.w3.org/2005/08/addressing" 
      xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
<s:Header> 
<a:Action 
    s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</a:Action> 
<a:MessageID>urn:uuid:fecde50b-a3bd-40f1-ae5b-662a3aa9bf80</a:MessageID> 
<ActivityId CorrelationId="cec77c8d-1d09-4e34-9c5a-dbf5bb219ba8" 
    xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">bfce2552-393d-43d0-8722-0c16ae22bba4</ActivityId> 
<a:ReplyTo> 
    <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address> 
</a:ReplyTo> 
<a:To s:mustUnderstand="1">https://10.11.71.151/soap/RegistryStoredQuery</a:To> 
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
<u:Timestamp u:Id="_0"> 
    <u:Created>2011-10-28T07:27:50.097Z</u:Created> 
    <u:Expires>2011-10-28T07:32:50.097Z</u:Expires> 
</u:Timestamp> 
<Assertion> .... </Assertion> 

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
... 
</Signature> 
</o:Security> 
</s:Header> 
<s:Body> 
    <t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"> 
    <t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType> 
    <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType> 
    <t:Entropy> 
    <t:BinarySecret u:Id="uuid-d1ed3eb6-d7f6-4d2b-ab7e-a6c60d899bad-3" Type="http://schemas.xmlsoap.org/ws/2005/02/trust/Nonce">iRqJf4/sY1yiu7Vh1eTGeAWJi7o0gxnhS6A2YvJQ6kI=</t:BinarySecret> 
    </t:Entropy> 
<t:KeySize>256</t:KeySize> 
</t:RequestSecurityToken> 
</s:Body> 
</s:Envelope> 

모든 아이디어를 어떻게 이 행동을 유발할 수 있습니까?

좋습니다.

답변