2014-02-18 42 views
0

是否有人知道创建已签名SAML Authnentication请求的正确步骤顺序?WSO2 IS 4.6.0:已签名SAML身份验证请求的组成

我试着用下面的步骤,但不幸的是,WSO2IS抛出一个异常

  1. 生成SAMLRequest值
  2. 编码为Base64的SAMLRequest值
  3. URL编码,SAMLRequest值
  4. 对SigAlg值进行网址编码:http://www.w3.org/2000/09/xmldsig#rsa-sha1
  5. 将算法签名(SHA1withRSA)与

SAMLRequest =值& SigAlg =值

  • URL编码所生成的签名
  • 预先感谢

    例外留言:

    错误{} org.opensaml.xml.security.SigningUtil - 在 签名验证 java.security.SignatureException错误:签名长度不正确:有252,但在sun.security.rsa.RSASignature期待256 .engineVerify(Unknown Source) at java.security.Signature $ Delegate.engineVerify(Unknown Source) at java.security.Signature.verify(Unknown Source) at org.opensaml.xml.security.SigningUtil.verify(SigningUtil。 java:247) at org.opensaml.xml.security.SigningUtil.verify(SigningUtil.java:215) at org.opensaml.xml.security.SigningUtil.verifyWithURI(SigningUtil.java:184) 在org.opensaml.xml.signature.impl.ExplicitKeySignatureTrustEngine.validate(ExplicitKeySignatureTrustEngine.java:156) 在org.wso2.carbon.identity.sso.saml.validators.SAML2HTTPRedirectDeflateSignatureValidator.validateSignature(SAML2HTTPRedirectDeflateSignatureValidator.java:78) 在org.wso2.carbon.identity.sso.saml.util.SAMLSSOUtil.validateDeflateSignature(SAMLSSOUtil.java:625) 在org.wso2.carbon.identity.sso.saml.util.SAMLSSOUtil.validateAuthnRequestSignature(SAMLSSOUtil.java:578) 在org.wso2.carbon.identity.sso.saml.processors.SPInitSSOAuthnRequestProcessor.process(SPInitSSOAuthnRequestProcessor.java:108) 在org.wso2.carbon.identity.sso.saml.SAMLSSOService.authenticate(SAMLSSOService.java:192) at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handle RequestFromLoginPage(SAMLSSOProviderServlet.java:415) at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleRequest(SAMLSSOProviderServlet.java:127) at org.wso2.carbon.identity.sso.saml.servlet。 SAMLSSOProviderServlet.doPost(SAMLSSOProviderServlet.java:81) at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) at javax.servlet.http.HttpServlet.service(HttpServlet。Java的:848)

    回答

    0

    下面是什么,是在规范的HTTP重定向结合由WSO2IS支持的方法。所以你所做的是不正确的。我想你已经错过了压缩部分。

    1. 使用openSAML
    2. SAML请求使用DEFLATE压缩被压缩构建SAML请求
    3. Base64编码为压缩数据是做
    4. URL编码为Base64编码的数据被完成。
    5. 如果是的RelayState存在,它必须是URL编码

    如果SAML请求与XML签名。然后,我们需要按如下方式签署邮件的URL编码形式。

    6.Signature算法标识符必须被包括作为URL编码

    7.Signature与构造成用于以下的字符串(这里顺序是重要的)

    SAMLRequest =值&的RelayState =值& SigAlg =值

    8.Signature值必须使用具有除去任何空白的base64编码进行编码,并作为命名为0查询字符串参数

    如果您通过this示例SP实现,您可以看到它是如何完成的。有一个类叫做SAML2SSOManager和方法buildRequest。你可以通过它。