【问题标题】:Active-directory - Cross domain trust with OAuth2 OBO flowActive-directory - 使用 OAuth2 OBO 流的跨域信任
【发布时间】:2020-09-30 20:05:47
【问题描述】:

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

这是我们拥有的一种架构

用户登录流程是由 AD 支持的 KeyCloak。当用户登录 apring 应用时,我们通过 AD 对他进行身份验证,并在 Keycloak 中同步用户。但是,要让任何用户登录平台,用户必须先登录。

我们的keycloak实际上也被其他实体使用,即使他还没有完成登录过程,用户仍然需要存在于系统中。

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

在这种情况下,我们可以遵循任何替代方法/模式吗?

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

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

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

【问题讨论】:

  • 我想我解决了!很快就会发布解决方案。

标签: oauth-2.0 azure-active-directory authorization single-sign-on spring-security-oauth2


【解决方案1】:

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

  1. Org 应用程序中的 keycloak 使用组织 AD 处理委派身份验证,因此我们被保存在那里。此流程已经到位,用户对此并不了解。
  2. 在 Org Keycloak 上成功验证后,我们会将用户带到 Wallet Keycloak,其中 Org keycloak 被设置为身份提供者 (IPA)。因此,用户被带到 Org keycloak 进行身份验证。
  3. 用户已经登录到 org keycloak 的事实,使用户已经获得授权,并将他送回钱包 keycloak,无需任何用户操作,从而使其看起来无懈可击。
  4. 使用 Org 作为 IPA,用户成功登录 Wallet 应用程序,并返回另一个令牌,我们存储该令牌以供将来与钱包 api 一起使用。

这就是它在现实中的样子—— 请注意,您在图中看到的虚线是流中的用户操作/重定向。我已经对它们进行了编号,以便于理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多