我正在尝试理解使用SAML的SSO。我遇到了RelayState参数,并且非常困惑为什么它在SSO中首先发送编码URL?这具体意味着什么?
请阅读来自Google Developer文档的以下内容:
Google生成一个SAML身份验证请求。将SAML请求编码并嵌入到合作伙伴SSO服务的URL中。 RelayState参数包含用户正在尝试访问的Google应用程序的编码URL,也嵌入在SSO URL中。这个RelayState参数是一个不透明标识符,应该没有任何修改或检查地返回。
我正在尝试理解使用SAML的SSO。我遇到了RelayState参数,并且非常困惑为什么它在SSO中首先发送编码URL?这具体意味着什么?
请阅读来自Google Developer文档的以下内容:
Google生成一个SAML身份验证请求。将SAML请求编码并嵌入到合作伙伴SSO服务的URL中。 RelayState参数包含用户正在尝试访问的Google应用程序的编码URL,也嵌入在SSO URL中。这个RelayState参数是一个不透明标识符,应该没有任何修改或检查地返回。
RelayState
的原始含义是,SP 可以在 AuthnRequest
中发送某些值到 IDP,并随后将其获取回来。SP 可以在 RelayState
中放置任何想要的值,而 IDP 应该只是在响应中回显它。
RelayState
参数旨在作为不透明标识符传递,不进行任何修改或检查。
使用 Idp-initiated 登录时,还有另一种事实上的标准用法 RelayState
。在这种情况下,没有来自 SP 的请求,因此无法中继任何状态。相反,IDP 使用 RelayState
向 SP 发送信号,指示成功登录后 SP 应重定向到的 URL 。 标准(Bindings 4.1.5)中指出,RelayState "可以是服务提供者上资源的URL"。
看起来 Google 即使在 SP-initiated 登录时也在使用 RelayState
作为目标 URL,这是完全可以的。但是,正如文档所说,IDP 应该简单地将其中继回来。
RelayState是指在成功登录后,IDP将重定向用户到SP上的资源的标识符。它是一种使SSO过程对用户更加短暂的方式,因为他们会再次重定向到最初在SP上请求的同一页面。