OneLogin 签名的 Authnrequest HTTP 重定向方法

Posted

技术标签:

【中文标题】OneLogin 签名的 Authnrequest HTTP 重定向方法【英文标题】:OneLogin Signed Authnrequest HTTP-Redirect Method 【发布时间】:2019-07-16 20:07:49 【问题描述】:

从我发现 OneLogin 测试连接器默认情况下不需要签名的 Authnrequest。使用 HTTP-Redirect 进行的 Authnrequest 无需签名即可正常工作。我能够通过 OneLogin 对我的用户进行身份验证,并处理 SAML 响应。

此时我正在尝试测试签署 AuthNRequest 的代码。基于规范https://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf,HTTP-Redirect 方法支持签名的 AuthNRequest。 url 参数将是“SAMLRequest=request&SigAlg=algorithm&Signature=signature”。我不需要 RelayState,所以它被排除在示例之外。规范说 HTTP-Redirect 方法的签名将使用查询字符串参数“SAMLRequest=request&SigAlg=algorithm”创建,使用查询字符串中指定的算法进行签名。所以请求本身没有签名。我正在使用自签名证书进行签名。我已将所有查询字符串值传递给 OneLogin 连接器,并且每次 AuthNRequest 都由 OneLogin 成功处理。但是,我已将签名值修改为无效,甚至将其留空以希望它失败并且 AuthNRequest 由 OneLogin 处理。

仅供参考 - 我尝试使用 https://www.samltool.com/sign_authn.php 创建签名的 AuthNRequest 以确保我做的正确,但它似乎只提供 HTTP-Post,而不是 HTTP-Redirect AuthNRequest。

我有以下问题:

    OneLogin 是否支持通过 HTTP 重定向签名的 AuthNRequest? 有没有办法将测试连接器设置为需要签名的 AuthNRequest? 如何通知 OneLogin 我的证书中用于签署 AuthNRequest 的公钥?

【问题讨论】:

【参考方案1】:

Onelogin(和其他 IDaaS)不支持签名请求。我从来没有确定为什么会这样,但直接的答案是 Onelogin 不支持。

【讨论】:

以上是关于OneLogin 签名的 Authnrequest HTTP 重定向方法的主要内容,如果未能解决你的问题,请参考以下文章

配置 ADFS / Spring Security 以接受未签名的 SAML AuthnRequest

没有签名的AuthnRequest在Gitlab上使用SAML

OneLogin SAML Authn请求签名验证工具是否支持HTTP-POST绑定?

Identity Server不验证SAML LogoutRequest签名

构造一个签名的 SAML2 LogOut 请求

Spring Security SAML:让 <Signature> 块出现在 <AuthnRequest>