Active-directory - 使用 OAuth2 OBO 流程的跨域信任

Active-directory - Cross domain trust with OAuth2 OBO flow

在审查/改进我们现有的安全架构方面需要一些帮助。

这是我们拥有的一种架构

用户登录流程是AD支持的KeyCloak。当用户登录 aprin 应用程序时,我们通过 AD 对其进行身份验证,并在 Keycloak 中同步用户。但是,对于要在平台上注册的任何用户,用户必须先登录。

我们的密钥斗篷实际上也被其他实体使用,即使用户还没有完成入职流程,他仍然需要存在于系统中。

Azure AD 是否提供任何功能,让我们在开始他们的入职时将所有用户从 AD 同步到 keycloak?有什么 API 或 export/import 功能可以帮助我们吗?

在这种情况下,我们可以遵循任何替代方案 approach/pattern 吗?

非常感谢这方面的任何帮助。

更新 这就是我们正在努力构建的。我们稍微改变了架构。现在 keycloak 可以存在,但在这两种情况下主要的身份验证代理都是 Azure AD。 这里是 -

但是还有一个问题 - 为了获得无缝的用户体验,组织应用程序需要调用钱包 API。要进行这些 API 调用,我们需要来自 Wallet AD 的访问令牌。考虑到信任已经建立,我假设用户将被信任。但是,我无法理解我们如何在没有客户端 activity 的情况下从 Wallet AD 获取令牌 activity。

我们使用 Keycloak 中的委托身份验证流程/Identety 提供程序流程解决了我们的用例。我们在 Wallet 应用程序和 Org 应用程序中添加了两个 keycloaks。

  1. Org 应用程序中的 keycloak 处理 Organization AD 的委托授权,所以我们被保存在那里。此流程已经到位,用户对此一无所知。
  2. 在 Org Keycloak 上成功验证后,我们将用户带到钱包 Keycloak,其中 Org keycloak 被设置为身份提供者 (IPA)。因此,用户被带到 Org keycloak 进行身份验证。
  3. 用户已经登录到 org keycloak 的事实,使用户已经获得授权,并在没有任何用户操作的情况下将他发送回钱包 keycloak,从而使它变得无形。
  4. 使用 Org 作为 IPA,用户成功登录到钱包应用程序,并返回另一个令牌,我们存储该令牌以备将来与钱包 api 一起使用。

这是现实中的样子 - 请注意,您在图中看到的虚线是流程中的用户操作/重定向。我给它们编号了,这样更容易理解。