繁体   English   中英

如何在Identity Provider(IdP)中维护状态参数启动SAML sso?

[英]How to maintain state parameter in Identity Provider (IdP) initiated SAML sso?

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

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

我也使用omniauthrails ,这使得状态变量强制PARAM和SSO提供商auth0

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM