gpt4 book ai didi

single-sign-on - 如何在身份提供者 (IdP) 发起的 SAML sso 中维护状态参数?

转载 作者:行者123 更新时间:2023-12-04 06:45:59 26 4
gpt4 key购买 nike

我开始使用基于服务提供商的 SSO for SAML。由于用户在继续登录之前必须输入他的电子邮件,因此启动了一个状态变量并将其传递给 SSO。它通过回调 URL 返回,因此为了完整性目的再次检查。它可以防止 CSRF 攻击。

现在 IdP 发起的 SSO 根本不允许我设置状态变量。登录从身份提供者开始,并且只向应用程序提供一个身份验证 token 。我不知道哪个用户从一开始就在进行身份验证。如果我删除状态变量检查,它也可能触发 CSRF 攻击。

我还在 rails 中使用 omniauth,这使得状态变量成为强制参数,SSO 提供程序是 auth0

将状态变量附加到 IdP 发起的 SSO 解决方案的方法是什么?

最佳答案

IDP-init-SSO SAML 流程中 RelayState 参数的实际标准值是您希望在 SP 成功验证 SAML 断言后将用户发送到的 URL。这适用于绝大多数 SAML 部署。

但是,该机制确实不能防止 CSRF 攻击,这就是为什么该规范对 IDP-init-SSO 中 RelayState 的值保持沉默并使其开放以就 IDP 和SP通过那个参数的值来防止CSRF。一种这样的机制是在 RelayState 中使用带符号的值,但如前所述,没有什么是标准化的,因此它将取决于 IDP 和 SP 之间的双边协议(protocol),该协议(protocol)不能扩展。

总结:将您希望用户转到的 URL 的值作为您发送给 SP 的“未经请求的”SAML 响应中的 RelayState 值发送。如何让 IDP 的 SAML 堆栈执行此操作是特定于实现的。对于 Auth0,您可以在以下位置阅读:https://auth0.com/docs/protocols/saml/saml-configuration#idp-initiated-sso ,在你的情况下它看起来像:
https://{accountname}.auth0.com/samlp/YOUR_CLIENT_ID?RelayState=http://FINAL_DESTINATION_URL

关于single-sign-on - 如何在身份提供者 (IdP) 发起的 SAML sso 中维护状态参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43861315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com