Spring SAML:如何将请求的 URL 作为 RELAY_STATE 推送到 SAML?
Posted
技术标签:
【中文标题】Spring SAML:如何将请求的 URL 作为 RELAY_STATE 推送到 SAML?【英文标题】:Spring SAML: how to push the requested URL to SAML as RELAY_STATE? 【发布时间】:2017-02-11 23:31:19 【问题描述】:例如,您的网站上有两个不同的文件夹,/folderA 和 /folderB
您可以在 Spring Security 中为这两个页面设置通用的 loginURL。
我使用 Spring SAML。真棒
-
Spring Security:一旦用户尝试获取
/folderA
或/folderB
,他们将首先被重定向到“本地”登录URL(domain.com/auth
)。
Spring SAML:LoginURL 页面 (domain.com/auth
) 会将用户重定向到远程 SAML SSO 提供程序(例如,myapp.okta.com
)。端点在 metadata.xml 中指定。
SAML SSO 提供程序将用户重定向到 SSO url(在 OKTA 中配置,假设为 sso.domain.com/auth/sso
)。
我想在 SSO 控制器 (sso.domain.com/auth/sso
) 中使用原始请求的 URL(在本例中为 /folderA 或 /folder)。我想让逻辑依赖于请求的 URL。
所以我的问题是
如何使用 Spring SAML 将这些文件夹 URL 注入到 SAML SSO Provider 的请求中? 我知道如何在没有 Spring SAML 的情况下实现它。所以我正在寻找如何为其配置 Spring SAML。
我认为RELAY_STATE
用于它。但我不明白如何在步骤 (1) 和/或 (2) 中检索它
【问题讨论】:
【参考方案1】:中继状态作为查询参数与 SAMLRequest 一起传递。传递中继状态取决于您使用的工具包,因此您需要查看他们的文档以了解如何完成。我在网上找到了这个有用的线程http://forum.spring.io/forum/spring-projects/security/saml/125415-spring-saml-integration-authentication-extended-info-relaystate
此外,一旦通过 SAML 建立会话,您就可以点击此链接(在这种情况下,您可以跳过传递会话令牌)http://developer.okta.com/use_cases/authentication/session_cookie#initiate-a-saml-sso-with-the-session-token。您可以使用 Sign on Tab -> View Setup instructions 中的单点登录 url,并对传入 RelayState 的请求发出 GET 请求。这将启动带您进入中继状态。
【讨论】:
以上是关于Spring SAML:如何将请求的 URL 作为 RELAY_STATE 推送到 SAML?的主要内容,如果未能解决你的问题,请参考以下文章
无法更改 Spring 安全 SAML SSO 中的默认“回复 URL”(断言消费者服务位置)
Spring SAML - 如何在 SP HTTP 请求上添加自定义字段?
Spring SAML Okta - 如何在 IDP 启动的流程中重定向到自定义 URL