2016-01-20 88 views
0

我試圖實現SSO。在我的SP的元數據我已經設置簽名和加密算法,SHA256預期簽名算法不匹配

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
     <ds:SignedInfo> 
      <ds:CanonicalizationMethod Algorithm="" /> 
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> 
      <ds:Reference URI=""> 
       <ds:Transforms> 
        <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
       </ds:Transforms> 
       <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> 
       <ds:DigestValue /> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue /> 
    </ds:Signature> 

,並在我的認證請求還我發送的請求爲:

Signature signature = (Signature) Configuration.getBuilderFactory() 
     .getBuilder(Signature.DEFAULT_ELEMENT_NAME) 
     .buildObject(Signature.DEFAULT_ELEMENT_NAME); 
    signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); 
    authnRequest.setSignature(signature); 
    ((SAMLObjectContentReference)signature.getContentReferences().get(0)).setDigestAlgorithm(EncryptionConstants.ALGO_ID_DIGEST_SHA256); 

而且在我的IDP端依賴方的高級選項卡下,我交叉檢查SHA-256設置爲哈希算法,但現在當我發送驗證請求,我得到的錯誤爲:

`SAML request is not signed with expected signature algorithm. SAML request is signed with signature algorithm` http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 . Expected signature algorithm is http://www.w3.org/2000/09/xmldsig#rsa-sha1 

請幫我解決這個問題,如果我的思念輸出S某處的東西。

回答

0

這對我有效!

在向IDP發送身份驗證請求時,我必須設置這兩行。

BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration.getGlobalSecurityConfiguration(); 
config.registerSignatureAlgorithmURI("RSA", SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); 

這臺全球算法,當你有多個客戶端將無法正常工作具有不同的簽名算法