2016-04-20 15 views
2

Verwendung von .Net 4.5 und generiert ein SAML2-Token mit WIF-Identitätsklassen und versucht, es zu der Soap-Körper-Anfrage hinzuzufügen, aber es ignoriert und Seife Anfrage generiert hat tatsächlich 'requestsecuritytoken' Soap-Anfrage, die zum Server geht. Ich habe keine STS.WCF-Kanal von CreateChannelWithIssuedToken sendet immer noch 'requestsecuritytoken' Anfrage

Referenzcode hier 'Need signature after SAML token in client request' scheint zu funktionieren.

Mein Custom in app.config ist

 <customBinding> 
      <binding name="AccountDetailsServiceSoap11" > 
      <textMessageEncoding messageVersion="Soap11WSAddressing10"/> 
      <security includeTimestamp="true"> 
      </security> 
      <httpTransport></httpTransport> 
      </binding> 
    </customBinding> 

Und erzeugte Seife Umschlag

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing"> 
<s:Header> 
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action><a:MessageID>urn:uuid:b7ff68ac-df62-4051-a68a-7382b0ec4995</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">http://localhost:8888/spring-webservices-sample/endpoints</a:To></s:Header><s:Body><t:RequestSecurityToken Context="uuid-f4007218-af5c-4f84-b800-0e47f102d3b5-1" 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:KeySize>256</t:KeySize><t:BinaryExchange ValueType="http://schemas.xmlsoap.org/ws/2005/02/trust/spnego" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">YHoGBisGAQUFAqBwMG6gMDAuBgorBgEEAYI3AgIKBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICHqI6BDhOVExNU1NQAAEAAAC3shjiCQAJAC8AAAAHAAcAKAAAAAYBsR0AAAAPQUEzNzMwOUNJTkNPTVNZUw==</t:BinaryExchange></t:RequestSecurityToken></s:Body></s:Envelope> 

ist ich von einem .net-Client einen sicheren Web-Service mit SAML wir in Java testen möchten haben. Ich habe den Service-Client von WSDL in Visual Studio 2015 generiert und dann die SAML-Assertion von den Klassen generiert und nun versucht, dieses Token mit der Soap-Anfrage an den Java-Service zu übergeben.

Können einige bitte teilen, was ich vermisse oder falsch mache, ich bin neu in .net/WCF/WIF Welt?

dank

Antwort

0

Nach etwas mehr Forschung, fanden heraus, dass die WCF-Infrastruktur, wenn sie bei WCF Client-Seite erzeugt ein RST (requestsecuritytoken) Anforderung zuerst im Hintergrund ‚Custom‘ mit einem ersten und fand noch nicht, wenn wir können, ändere dieses Verhalten. Also stattdessen verwendet 'basicHTTPBinding' mit Signatur-Option (mit protectlevel auf Client-Schnittstelle festgelegt, um zu signieren), die jetzt die Soap-Körper unterschreiben und Timestamnp setzen.
Jetzt für SAML2-Token-Insertion verwendet Interceptor und fügte es, nachdem es aus WIF-Klassen generiert und senden Sie die endgültige Soap-Anfrage, die SAML-Assertion signiert, Zeitstempel und Soap-Körper unterzeichnet hat. Die Anfrage wurde auf der Spring-WS-Seite mit den Sicherheitsaktionen verarbeitet und die Geschäftslogik wurde aufgerufen. Dies ist nur für Entwicklung und Tests. Ich denke, für die Produktion brauchen wir immer noch einen STS.

Verwandte Themen