У меня есть клиент WCF, который отправляет сообщение не-WCF службе, и у этой службы возникают проблемы с обработкой метода подписи HMAC-SHA1, используемого для подписи элемента WS-Security Timestamp. В идеале мы хотели бы использовать метод подписи RSA-SHA1, но мне не удалось заставить WCF использовать этот метод подписи.
Привязка, которую я использую, представляет собой настраиваемую привязку, которая позволяет мне отправлять токен SAML 2.0 через HTTPS:
Подпись в исходящем запросе выглядит следующим образом:
GZfW1RkyS4DHYFPHRnRuqNSo+qE=
rMzQ/kEV7AXcO3wm9hfQXNoX5r4=
_9f79359e-63dc-4e38-888c-6567dac4b41b
Обратите внимание на
- это http: //www.w3.org / 2000/09 / xmldsig # hmac-sha1
Интересно то, что алгоритм HMAC-SHA1 является симметричным (один ключ для шифрования и дешифрования), в то время как RSA-SHA1 асимметричным (требуется один ключ для шифрования и один для дешифрования. ). Я думаю, что WCF использует алгоритм HMAC-SHA1, потому что он симметричен, а токен SAML, которым обмениваются, является общим секретом (ключом). Имеет смысл использовать токен SAML в качестве общего ключа для симметричного алгоритма, но есть ли возможность заставить WCF использовать асимметричный алгоритм, такой как RSA-SHA1?
Мне удалось получить небольшую модификацию подписи путем изменения атрибута binding / security / defaultAlgorithmSuite, но различные параметры не дают мне возможности указать здесь RSA-SHA1:
defaultAlgorithm = Default:
defaultAlgorithm = Basic256:
defaultAlgorithm = Basic256Rsa15:
defaultAlgorithm = Basic256Sha256:
defaultAlgorithm = Basic256Sha256Rsa15:
Есть ли как я могу заставить WCF использовать RSA-SHA1 в подписи Timestamp?