Клиент WCF - Указание алгоритма подписи для подписи WS-Security Timestamp

У меня есть клиент 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?

9
задан js80 20 February 2012 в 18:26
поделиться