WCF-Client - Angabe des Signaturalgorithmus für die WS-Security-Timestamp-Signatur

9

Ich habe einen WCF-Client, der eine Nachricht an einen Nicht-WCF-Dienst sendet, und dieser Dienst hat Probleme mit der HMAC-SHA1-Signaturmethode, die zum Signieren des WS-Security-Zeitstempelelements verwendet wird. Idealerweise würden wir gerne die RSA-SHA1-Signaturmethode verwenden, aber ich konnte WCF nicht dazu bringen, diese Signaturmethode zu verwenden.

Die Bindung, die ich verwende, ist eine benutzerdefinierte Bindung, die es mir erlaubt, ein SAML 2.0-Token über HTTPS zu senden:

%Vor%

Die Signatur in der ausgehenden Anfrage sieht folgendermaßen aus:

%Vor%

Beachten Sie, dass <SignatureMethod> Ссылка

ist

Eine interessante Sache ist, dass der HMAC-SHA1-Algorithmus symmetrisch ist (ein Schlüssel zum Verschlüsseln und Entschlüsseln), während RSA-SHA1 asymmetrisch ist (erfordert einen Schlüssel zum Verschlüsseln und einen zum Entschlüsseln). Ich denke, dass WCF den HMAC-SHA1-Algorithmus verwendet, weil er symmetrisch ist und das auszutauschende SAML-Token das gemeinsame Geheimnis (Schlüssel) ist. Es ist sinnvoll, das SAML-Token als gemeinsamen Schlüssel für einen symmetrischen Algorithmus zu verwenden, aber gibt es eine Option, WCF zu zwingen, einen asymmetrischen Algorithmus wie RSA-SHA1 zu verwenden?

Ich war in der Lage, eine leichte Modifikation der Signaturmethode zu erhalten, indem ich das Attribut binding / security / defaultAlgorithmSuite änderte, aber die verschiedenen Optionen geben mir nicht die Möglichkeit, RSA-SHA1 hier anzugeben:

defaultAlgorithm = Standard:

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>

defaultAlgorithm = Basic256:

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>

defaultAlgorithm = Basic256Rsa15:

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>

defaultAlgorithm = Basic256Sha256:

<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>

defaultAlgorithm = Basic256Sha256Rsa15:

<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>

Gibt es eine Möglichkeit, WCF zu zwingen, RSA-SHA1 für die Timestamp-Signatur zu verwenden?

    
js80 20.02.2012, 18:26
quelle

1 Antwort

0

Ich denke, es ist ein Interoperabilitätsproblem. Es gibt ein ähnliches Problem in der Verbindung unten.

Ссылка

Sie können das Token manuell erstellen und signieren. Überprüfen Sie diesen Beitrag:

Wie zu machen WCF-Client entspricht spezifischer WS-Sicherheit - signieren Sie UsernameToken und SecurityTokenReference

    
Sercan 19.09.2014 13:32
quelle