当前位置: 首页 > 知识库问答 >
问题:

WSO2是4.6.0:已签名SAML身份验证请求的组合

史旺
2023-03-14

有人知道创建签名SAML身份验证请求的正确步骤和顺序吗?

我尝试了以下步骤,但不幸的是,WSO2IS抛出了一个异常

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

SAMLRequest=值

提前谢谢

异常消息:

错误{org.opensaml.xml.security.SigningUtil}-签名验证期间的错误。SignatureException:签名长度不正确:在sun.security.rsa.RSASignature中得到252,但预期为256。engineVerify(未知源代码)位于java.security.Signature$Delegate。engineVerify(未知源代码)位于java.security.Signature。在org.opensaml.xml.security.SigningUtil.verify(signngutil.java:247)处验证(未知源代码)在org.opensaml.xml.security.signnguil.verific(signinguil.java:215)处验证,在org.opensaml.xml.security.Signinguill.verifyWithURI(signangutil.java:184)处,在org.opensaml.xml.signature.impl.ExplicitKeySignature.ExpliciTKeySignatureTrustingine.validate处验证(ExplicitKey SignatureRuntine.java:156)org.wso2.carbon.identity.sso.saml.validators.SAML2HTTPRedirectDeflateSignatureValidator.validateSignature(saml2HttpRedirectdeFlateSignatureAvalidator.java:78)位于org.ws02.carbone.identility.sso.saml.util.SAMLSSOUtil.ValidatedFlateSignator(SAMLSSOUtil.java:625)位于org.wso2.carbon.identity.ssol.util.SAMLSSOUtil.samlssoutel.eauthnrequestSignatureorg.wso2.carbon.identity.sso.saml.processors.SPInitSSOAuthnRequestProcessor.process(SpinitsOauthnRequestProcessOR.java:108)位于org.wso2.carbon.identity.sso.saml.SAMLSSOService.authenticate(SAMLSSOService.java:192),org.wso2.Carbo.Identience.sso.saml.servlet.SAMLSSOProviderServlet.HandlerRequestFromLoginPage(SAMLSSOProviderServlet.java:415)位于org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleRequest(SAMLSSOProviderServlet.java:127)位于org.ws02.carbone.idention.sso.saml.servlet.samlsoProviderServelet.doPost(SAMLSSOProviderServlet.java:81)位于javax.servlet.http.HttpServlet.;service(httpServelet.java:755)位于javanx.servlet.http.httservlet.服务(HttpServlet.java:848)

共有1个答案

李俊雅
2023-03-14

以下是WSO2IS支持的HTTP重定向绑定规范中的方法。因此,你所做的是不正确的。我猜你错过了压缩部分。

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

如果SAML请求用XML签名签名。然后,我们需要对消息的URL编码形式进行签名,如下所示。

6.Signature算法标识符必须包含为URL编码

7.Signature是为以下字符串构造的(这里顺序很重要)

SAMLRequest=值

8.签名值必须使用base64编码进行编码,删除任何空白,并作为名为< code>Signature的查询字符串参数包含在内

如果您浏览一下这个SP实现示例,就可以看到它是如何实现的。有一个名为< code>SAML2SSOManager的类和< code>buildRequest方法。你可以通过它。

 类似资料:
  • 我已经浏览了类似的问题并阅读了几篇关于SAML 2.0的文章,但我仍然无法理解SAML Auth Request。 我已经实施了几个基于SAML的SSO解决方案,其中我的公司是IdP(身份提供商)。我们一直通过SAML响应将用户从我们的网站发送给第三方: 用户登录我们的网站 用户单击我们网站上的特殊链接 我们准备SAML响应XML 我们用私钥对其进行电子签名 将其作为HTML格式的隐藏字段以及“R

  • 我应该在Jupyter中实现SAML身份验证(Okta)。我试过搜索,但什么也没找到。也许有人知道答案。谢谢你的帮助。

  • 版本:WSO2身份服务器5.4.1 出于审计的目的,我们编写了UserOperationEventListener,以便通过实现doPostAuthenticate()来挂钩到身份验证过程。 这通过表单捕获API身份验证和web登录。不幸的是,当is作为另一个第三方SAML IDP的SAML SP运行时,侦听器没有被调用。 问:有没有一个监听器在SAML认证成功时被调用?或者有没有其他方法可以连接

  • 我正在学习使用ADFS进行基于SAML的声明验证。与其将用户带到IDP的登录页面,然后请求用户输入她的凭据,不如在SP中获取用户的凭据并将其传递给IDP以在那里进行验证,然后使用SAML令牌返回SP。 这纯粹是实验性的,我想尝试一下,以避免用户在IdP登录页面中输入凭据,而不是在SP中获取她的凭据从IdP验证。 谢谢

  • 我试图得到一个API查询到python。命令行 给出一些json输出。myToken是一个十六进制变量,始终保持不变。我想从python中调用它,这样我就可以循环使用不同的ID并分析输出。有什么想法吗?在需要身份验证之前,我已经使用urllib2完成了这项工作。我还查看了requests模块,但不知道如何实现。 非常感谢。