1

我使用了 OneLogin 的 java 集成工具包,我能够使用 SAML SSO 登录到我的应用程序的默认主页。但是,我需要用户最初请求的 url 来重定向。不幸的是,OneLogin 在对我的应用程序进行 SAML 断言期间没有返回 RelayState 参数。或者我应该将它作为不同的查询参数传递?

注意:这是 SP 发起的 SSO。

4

2 回答 2

0

RelayState 是一个不透明的令牌,它引用用户尝试访问的原始 URL(或应用程序内的资源)。OneLogin Java SAML SDK 将向 IdP 发送 AuthRequest,但不会自动解析 URL 并向 IdP 发送令牌。

使用该工具包的一个简单扩展如下:

1.) 当用户访问受保护的页面时,检查会话。2.) 如果没有活动会话(即没有 cookie 等),则确定用户是否是启用了基于 SAML 的 SSO 的组织的一部分(通过 URL 子域或请求用户的电子邮件地址......等) 3.) 您的应用程序在确定用户未登录并且应该针对 IdP 进行身份验证后,可以利用 OneLogin 的 SAML 工具包中的开箱即用代码将 SAMLRequest 发送到 Settings.java 文件中存储的 HTTP 端点。4.) 在 authrequest.java 文件中创建一个附加函数来创建 RelayState 令牌,这可以像解析 URL 然后对其进行 URL 编码一样简单。5.) 在您的应用程序的 java-saml/sample/src/main/webapp/index.jsp 逻辑中调用该函数,并使用它将变量 ?RelayState={yourtoken} 添加到身份验证请求中。

非常好!

于 2014-08-22T00:00:04.137 回答
0

我们将很快更新 Java 工具包以使其现代化并带来一大堆 SAML 功能。

于 2014-07-11T22:01:26.980 回答