我使用了OneLogin的java集成工具包,我可以使用SAML SSO登录我的应用程序的默认主页。但是,我需要用户最初请求重定向的URL。不幸的是,OneLogin在SAML断言期间没有将RelayState参数返回给我的应用程序。或者我应该将其作为不同的查询参数传递?
注意:这是SP发起的SSO。
答案 0 :(得分:0)
我们将很快更新Java工具包以使其现代化并带来一大堆SAML功能。
答案 1 :(得分:0)
RelayState是一个不透明的标记,它引用用户尝试访问的原始URL(或应用程序内的资源)。 OneLogin Java SAML SDK将向IdP发送AuthRequest,但不会自动解析URL并将令牌发送到IdP。
使用工具包的简单扩展如下:
1。)当用户访问受保护的页面时,检查会话。 2.)如果没有活动的sesssion(即没有cookie等),则确定用户是否是启用基于SAML的SSO的组织的一部分(通过URL子域或请求用户的电子邮件地址等) 3.)您的应用程序在确定用户未登录并且应该针对IdP进行身份验证后,可以利用OneLogin的SAML工具包中的现成代码将SAMLRequest发送到设置中存储的HTTP端点。 java文件。 4.)在authrequest.java文件中创建一个附加函数来创建RelayState标记,这可以像解析URL然后URL编码一样简单。 5.)在应用程序的java-saml / sample / src / main / webapp / index.jsp逻辑中调用该函数,并使用它将变量?RelayState = {yourtoken}添加到auth请求。这将通过整个工作流程保留,最后只需将其解析出来并将其用于简单的重定向。
非常好!