[英]how to Configure openam as Identity provider(IdP) to test SAML based SSO
[英]How to maintain state parameter in Identity Provider (IdP) initiated SAML sso?
我开始使用基于服务提供商的SSO进行SAML。 由于用户必须在继续登录之前输入他的电子邮件,因此启动了状态变量并将其传递给SSO。 它通过回调URL返回,因此再次检查是否有理由。 它可以防止CSRF攻击。
现在IdP发起的SSO根本不允许我设置状态变量。 登录从身份提供程序开始,只向应用程序提供身份验证令牌。 我不知道哪个用户从一开始就进行身份验证。 如果我删除状态变量检查,它也可能触发CSRF攻击。
我也使用omniauth
中rails
,这使得状态变量强制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.