当前位置: 首页 > 知识库问答 >
问题:

SSO(例如SAML)中使用的RelayState参数到底是什么?

潘辰龙
2023-03-14

我正在尝试使用SAML来理解SSO。我遇到了RelayState参数,并且非常困惑为什么它在SSO中首先发送编码的URL?这到底是什么意思?

请从Google Developer留档中阅读以下内容:

Google生成一个SAML身份验证请求。SAML请求被编码并嵌入到合作伙伴SSO服务的URL中。包含用户试图访问的Google应用程序的编码URL的RelayState参数也嵌入到SSO URL中。此RelayState参数是一个不透明的标识符,在不进行任何修改或检查的情况下传回

共有3个答案

许远航
2023-03-14

根据SAML官方文件,

一些绑定定义了一种“RelayState”机制来保存和传递状态信息。当这种机制作为SAML协议的初始步骤用于传输请求消息时,它对随后用于传输响应的绑定的选择和使用提出了要求。也就是说,如果SAML请求消息伴随着RelayState数据,则SAML响应程序必须使用也支持RelayState机制的绑定返回其SAML协议响应,并且必须将其随请求接收的确切RelayState数据放入响应中相应的RelayState参数中。

尉迟冯浩
2023-03-14

RelayState是SP上资源的标识符,IDP将把用户重定向到该资源(成功登录后)。这是一种使SSO过程对用户来说更加短暂的方法,因为他们会再次被重定向到他们最初在SP上请求的同一个页面。

米夕
2023-03-14

RelayState的原始含义是SP可以将一些值与AuthnRequest一起发送到IDP,然后将其取回。SP可以在RelayState中输入它想要的任何值,IDP应该在响应中回显它。

RelayState参数是一个不透明的标识符,无需任何修改或检查即可传回

当使用Idp启动的登录时,RelayState还有另一个事实上的标准用法。在这种情况下,没有来自SP的传入请求,因此没有要中继回的状态。相反,IDP使用RelayState向SP发送信号,告知成功登录后SP应重定向到哪个URL。在标准(Bindings 4.1.5)中指出,RelayState“可能是服务提供商处资源的URL。”

谷歌似乎正在对目标URL使用RelayState,即使是在SP发起的登录上,这也很好。但正如文件所说,IDP应该将其转发回去。

 类似资料:
  • Java的类支持这里列出的转换。其中有几个变体: null 但在这种情况下,像ECB或CBC这样的分组密码模式怎么能“无填充”地使用呢?假设我们使用加密一个250位的消息。明文的第一个块显然是消息的前128位。第二个明文块的最后6位是多少?

  • 假设我们有一个名为托管在tomcat上的服务提供商应用程序,用户单击指向SP a的链接。SP a没有看到提供的令牌,因此它会将用户重定向到IdP进行身份验证(通过某种方式提供SAML Authn请求)。然后,IdP将用户重定向到提供凭据的某个公共登录页面,假设这些凭据正确,IdP将创建一个SAML响应,其中包含一个令牌和一些关于主题的断言,并将其发送回SP a。SP a看到了这一点,并允许用户访问

  • 如何使用SAML协议中的RelayState指定IdP启动的SSO中SP的登录页? 我在IdP和SP之间设置了一个IdP发起的SSO流程。它可以工作,但是它位于root_path。我需要这个登陆RelayState URL。 我正在使用device。在我的控制器下面找到:

  • 摘要 我希望通过使用来自Django站点的身份验证来使用Dropbox SSO功能。请注意,我不希望使用SAML作为我的Django站点的后端。 资源 1)Dropbox自定义SSO帮助页面:https://www.dropbox.com/en/help/1921#custom 2)创建SAML响应:https://robinelvin.wordpress.com/2009/09/04/saml-

  • 本文向大家介绍python使用xpath中遇到: 到底是什么?,包括了python使用xpath中遇到: 到底是什么?的使用技巧和注意事项,需要的朋友参考一下 前言 大家在学习python爬虫的过程中,会发现一个问题,语法我看完了,说的也很详细,我也认真看了,爬虫还是不会写,或者没有思路,所以我的所有文章都会从实例的角度来解析一些常见的问题和报错。下面话不多说了,来一起看看详细的介绍吧。 Elem

  • 问题内容: Java中的引用到底是什么?它是一个内存地址吗?Java引用等同于取消引用的C ++指针吗? 换句话说,给出以下内容: 上面的比较是否等同于比较C ++中的两个指针? 问题答案: 相当于在C / C ++中比较两个指针,是的。 但是,Java中的引用和C / C ++中的指针之间有两个非常重要的主要区别: Java引用无法执行指针算术:不能将3引用“加”, 只能 使其指向另一个(已知)