服务提供者如何观察来自多个身份提供者的成功登录

how can service provider observe successul logins from multiple identity providers

我是 WSO2 身份服务器和 SSO 的新手。 我的要求是围绕两个门户建立信任边界,每个门户都有自己的专用用户存储、身份和服务提供商。用户可以选择使用哪个身份提供者进行身份验证,并自动通过其他身份提供者进行身份验证。每个身份提供者可以有多个注册租户。 我正在跟进 : https://docs.wso2.com/display/IS500/Connecting+Two+Identity+Servers+with+SAML+SSO https://docs.wso2.com/display/IS500/Adding+a+Service+Provider+and+Identity+Provider+Using+Configuration+Files

WSO2 身份服务器实例#1: 对于门户 1,我有一个已配置的常驻身份提供者和外部身份提供者(WSO2 身份服务器实例 #2)。它还为门户 1 中的应用程序配置了服务提供商,并具有自定义用户存储管理器,使用门户 1 上应用程序中的用户存储。它配置了第二个服务提供商,参考 WSO2 身份服务器实例#2。

WSO2 身份服务器实例#2: 对于门户 2,我有一个已配置的常驻身份提供者和外部身份提供者(WSO2 身份服务器实例 #1)。它还为门户 2 中的应用程序配置了服务提供商,并具有自定义用户存储管理器,使用门户 2 上的应用程序中的用户存储。它配置了第二个服务提供商,参考 WSO2 Identity Server 实例#1。

我不明白如果门户 2 用户打开门户 1 并选择使用 WSO2 身份服务器实例 #2 中的身份提供者进行身份验证,那么 WSO2 身份服务器实例 #1 中的服务提供者如何能够 - 观察成功登录 - 确定成功登录源自哪个身份提供者 - 如何为通过外部身份提供程序登录的用户添加身份验证 cookie 信息,以便用户也在此系统上进行身份验证。

有谁知道这些问题的好的解决方案,或者可以指导我阅读解释这些问题的良好阅读资源吗?

this post 中描述了非常相似的场景。

在回答您的问题之前,让我们考虑一下基本流程, "Portal #2 user trying to login to Portal #2"

如果您完成 blog 这就是第 1 步、第 2 步和第 3 步中解释的场景。

现在你的问题是, "How portal #2 user, login to portal #1 (since portal #2 user know his realm and choose IS #2 as its IdP)"

从步骤 #4 到步骤 #8 描述的流程。

"I don't understand if a portal 2 user, opens portal 1 and selects to authenticate with say the identity provider in WSO2 Identity Server instance #2"

在这里,当用户打开门户 1 时,它将重定向到 IS 1,因为 IS 1 是门户 1 的可信 IdP。在重定向到 IS 1 后,用户可以决定他是想使用 IS 1 登录还是IS 2(因为 IS 2 在 IS 1 中被信任为 IdP)。

"how the service provider in WSO2 Identity Server instance #1 can - observe that successful login - identify which identity provider the successful login originated from"

IS 1 可以知道用户的决定是什么,因为该决定是在用户在 IS 1 中而不是在门户 1 中做出的**。

"how to add authentication cookie information for a user logged via external identity provider, so the user is also authenticated on this system"

将在两个 IdP 中创建经过身份验证的会话。

自从提到的博客 post 详细介绍了一个很好的用例后,我只是简短地描述了您的担忧。

** 门户 1 也可以做出该决定,但门户 1 仍不会直接与 IS 2 通信。身份验证请求始终通过其自己域的身份提供程序。

HTH, 达瑞