根据我的发现,默认情况下,OneLogin测试连接器不需要签名的Authnrequest。使用HTTP重定向进行的Authnrequest无需签名即可正常工作。我可以通过OneLogin对用户进行身份验证,并处理SAML响应。
这时,我正在尝试测试对AuthNRequest进行签名的代码。根据规范https://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf,HTTP-Redirect方法支持签名的AuthNRequest。网址参数为“ SAMLRequest = request&SigAlg = algorithm&Signature = signature”。我不需要RelayState,因此它已被排除在示例之外。规范说,将使用查询字符串参数“ SAMLRequest = request&SigAlg = algorithm”创建HTTP-Redirect方法的签名,该参数使用查询字符串中指定的算法进行签名。因此,请求本身未签名。我正在使用自签名证书进行签名。我已将所有查询字符串值传递给OneLogin连接器,并且每次OneLogin成功处理AuthNRequest时。但是,我将签名值修改为无效,甚至将其保留为空白,以希望它失败并且AuthNRequest由OneLogin处理。
仅供参考-我尝试使用https://www.samltool.com/sign_authn.php创建已签名的AuthNRequest以确保我正确执行了此操作,但是它似乎仅提供HTTP发布,而不提供HTTP重定向AuthNRequest。
我有以下问题:
答案 0 :(得分:0)
Onelogin(和其他IDaaS)不支持已签名的请求。我从未确定为什么会这样,但直接的答案是Onelogin中对此不提供支持。