是否有两个具有共同身份提供者的依赖方共享信息的标准?
Is there a standard for two Relying Parties with a common Identity Provider to share information?
这是我最近一直在考虑的一种情况:
- 客户端有自己的身份提供者(即 ADFS)
- 我公司的 Web 应用程序(应用程序 A)支持 SAML 和 OpenID Conect
- 另一家公司的应用程序(应用程序 B)也支持 SAML 和 OpenID Connect
- 应用程序 A 和 B 都与身份提供者相关联
- 可以请应用B的作者修改
应用程序 A 和 B 彼此之间有 links。为了从应用程序 A 到 B,工作流程如下所示:
- 用户登录到应用程序 A
- 用户点击一个link到应用B
- 用户现在位于应用程序 B 登录屏幕
- 已输入电子邮件地址
- 用户被退回到 ADFS 或类似系统
- 用户现在登录到应用程序 B 并且可以看到资源
我们希望简化用户体验:
- 用户登录到应用程序 A
- 用户点击一个link到应用B
- 应用程序 B 以某种方式检测到用户正在使用 SSO 并将他们重定向到适当的页面
- 用户跳转到 ADFS 或类似系统。希望如果上次登录不是很久以前,用户应该会自动进行身份验证。
- 用户现在已登录到应用程序 B 并且可以看到该资源。
现在,我们正在考虑将出站 link 重写为应用程序 B,如下所示:https://example.com/redirect?email=user@example.com&url=/the-resource
这将允许应用程序 B 检测是否需要 SSO,我想如果没有其他选择,我们会这样做。不过,如果有一个已经建立的标准来做这件事,我会很高兴,这样我们就可以要求其他公司实施相同的标准。
我知道 SSO 系统的检测留给了依赖方,所以也许这只是我们必须与应用程序 B 的作者一起解决的问题。
是否有 RP 到 RP 数据交换的标准,其中两个 RP 具有共同的身份提供者?
我认为您的方向是正确的。 RP 是否认为它应该使用 IDP 完全取决于 RP,因此您只需要在导航到应用程序 B 时传递足够的上下文,以便它做出决定。因此,在这种情况下,"standard" 将是到已知端点的前端通道导航,其中包含您在查询字符串或哈希中所需的信息。
恐怕没有 SAML 依赖 parties/service 供应商交换信息的标准。所有协议消息都在声明 provider/identity 提供者和依赖 party/service 提供者之间。
代替标准,你提出的建议看起来很合理。
如果 "share information" 你的意思是 "Provide a hint as to the user's IDP" 正在制定标准,https://ra21.org/ . Before RA21 started, i had a similar thought that i shared at IIW 22 (https://www.internetidentityworkshop.com/proceedings.html)。这基本上就是您的提议:在 URL 中放置一个 IDP 提示。反应是积极的,但很少有人有可以使用它的用例。
我注意到我们针对 OpenIDConnect 讨论的提案(参见星期二 5G,会议记录的第 45 页)将是发行者 ...redirect?issuer=[issuer]...请参阅规范注释理由。
如果您共享 SAML IDP,您可以查看 http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-ui/v1.0/cs01/sstc-saml-metadata-ui-v1.0-cs01.pdf §2.2 发现提示信息。如果您的 SAML IDP 在其元数据中包含 child 元素,这将是 IDP 确定 RP 如何相互暗示的直接方式,并且 URL 中的值可能是...... redirect?DomainHint=[whatever]...已经好几年了,我不记得了
最后一点,发送 URL 中的电子邮件地址会违反很多隐私期望。不要将 PII 放入您的 URL!
听起来您需要一个 'WAYF-less' URL 应用程序 B 的入口点。WAYF = 您来自哪里?并且是找出用户与哪个 IdP 相关联的旧方法。如果用户已在应用程序 A 中通过身份验证,则应用程序 A 知道该用户的 IdP 的实体 ID。用户的 IdP 也将为他们进行身份验证会话,因为他们已经登录到应用程序 A。
因此您可以在应用程序 B 中拥有:
https://applicationb.com/sso?entityID=https://some.idp.com/shibboleth
应用程序 B 然后加载实体 ID 的 SAML 元数据,并自动将浏览器重定向到与实体 ID 关联的 SSO URL,IdP 会将用户重定向回应用程序 B 的 SAML 消费者端点。用户将不会看到另一个登录屏幕(除非他们的 IdP 会话已过期)并且应用程序 B 将获得自己的一组 SAML 属性。
在 URL 中共享属性并不理想,因为应用程序 A 可能有权查看用户的电子邮件(由 IdP 发布)但应用程序 B 可能没有。因此,最好遵循协议,让 IdP 将属性发布给应用程序 B,与应用程序 A 了解用户的任何信息分开。
A 唯一与 B 共享的是用户 IdP 的实体 ID。这允许 B 开始 SAML 流程并为自己获取属性。
这是我最近一直在考虑的一种情况:
- 客户端有自己的身份提供者(即 ADFS)
- 我公司的 Web 应用程序(应用程序 A)支持 SAML 和 OpenID Conect
- 另一家公司的应用程序(应用程序 B)也支持 SAML 和 OpenID Connect
- 应用程序 A 和 B 都与身份提供者相关联
- 可以请应用B的作者修改
应用程序 A 和 B 彼此之间有 links。为了从应用程序 A 到 B,工作流程如下所示:
- 用户登录到应用程序 A
- 用户点击一个link到应用B
- 用户现在位于应用程序 B 登录屏幕
- 已输入电子邮件地址
- 用户被退回到 ADFS 或类似系统
- 用户现在登录到应用程序 B 并且可以看到资源
我们希望简化用户体验:
- 用户登录到应用程序 A
- 用户点击一个link到应用B
- 应用程序 B 以某种方式检测到用户正在使用 SSO 并将他们重定向到适当的页面
- 用户跳转到 ADFS 或类似系统。希望如果上次登录不是很久以前,用户应该会自动进行身份验证。
- 用户现在已登录到应用程序 B 并且可以看到该资源。
现在,我们正在考虑将出站 link 重写为应用程序 B,如下所示:https://example.com/redirect?email=user@example.com&url=/the-resource
这将允许应用程序 B 检测是否需要 SSO,我想如果没有其他选择,我们会这样做。不过,如果有一个已经建立的标准来做这件事,我会很高兴,这样我们就可以要求其他公司实施相同的标准。
我知道 SSO 系统的检测留给了依赖方,所以也许这只是我们必须与应用程序 B 的作者一起解决的问题。
是否有 RP 到 RP 数据交换的标准,其中两个 RP 具有共同的身份提供者?
我认为您的方向是正确的。 RP 是否认为它应该使用 IDP 完全取决于 RP,因此您只需要在导航到应用程序 B 时传递足够的上下文,以便它做出决定。因此,在这种情况下,"standard" 将是到已知端点的前端通道导航,其中包含您在查询字符串或哈希中所需的信息。
恐怕没有 SAML 依赖 parties/service 供应商交换信息的标准。所有协议消息都在声明 provider/identity 提供者和依赖 party/service 提供者之间。
代替标准,你提出的建议看起来很合理。
如果 "share information" 你的意思是 "Provide a hint as to the user's IDP" 正在制定标准,https://ra21.org/ . Before RA21 started, i had a similar thought that i shared at IIW 22 (https://www.internetidentityworkshop.com/proceedings.html)。这基本上就是您的提议:在 URL 中放置一个 IDP 提示。反应是积极的,但很少有人有可以使用它的用例。
我注意到我们针对 OpenIDConnect 讨论的提案(参见星期二 5G,会议记录的第 45 页)将是发行者 ...redirect?issuer=[issuer]...请参阅规范注释理由。
如果您共享 SAML IDP,您可以查看 http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-metadata-ui/v1.0/cs01/sstc-saml-metadata-ui-v1.0-cs01.pdf §2.2 发现提示信息。如果您的 SAML IDP 在其元数据中包含 child 元素,这将是 IDP 确定 RP 如何相互暗示的直接方式,并且 URL 中的值可能是...... redirect?DomainHint=[whatever]...已经好几年了,我不记得了
最后一点,发送 URL 中的电子邮件地址会违反很多隐私期望。不要将 PII 放入您的 URL!
听起来您需要一个 'WAYF-less' URL 应用程序 B 的入口点。WAYF = 您来自哪里?并且是找出用户与哪个 IdP 相关联的旧方法。如果用户已在应用程序 A 中通过身份验证,则应用程序 A 知道该用户的 IdP 的实体 ID。用户的 IdP 也将为他们进行身份验证会话,因为他们已经登录到应用程序 A。
因此您可以在应用程序 B 中拥有:
https://applicationb.com/sso?entityID=https://some.idp.com/shibboleth
应用程序 B 然后加载实体 ID 的 SAML 元数据,并自动将浏览器重定向到与实体 ID 关联的 SSO URL,IdP 会将用户重定向回应用程序 B 的 SAML 消费者端点。用户将不会看到另一个登录屏幕(除非他们的 IdP 会话已过期)并且应用程序 B 将获得自己的一组 SAML 属性。
在 URL 中共享属性并不理想,因为应用程序 A 可能有权查看用户的电子邮件(由 IdP 发布)但应用程序 B 可能没有。因此,最好遵循协议,让 IdP 将属性发布给应用程序 B,与应用程序 A 了解用户的任何信息分开。
A 唯一与 B 共享的是用户 IdP 的实体 ID。这允许 B 开始 SAML 流程并为自己获取属性。