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>
Ссылка
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?
Tags und Links wcf c# wcf-client xml-signature ws-security