首页 > 解决方案 > Open ID Connect 导致 SSO 采用混乱?

问题描述

我们有一个企业应用程序 E,其内容主要是一个 Web 应用程序 W。在这里,我将仅将 Web 应用程序 W 用于实际目的。作为一个遗留系统,这个 Web 应用程序 W 有自己的用户、安全性和访问管理。这意味着,它有自己的登录页面等。现在这个 W 被一个政府组织使用,因此将托管在这个政府组织的环境/网络中。

该组织已经拥有一个 OpenID Connect 基础架构,该基础架构(应该)用于在其网络/环境中托管的所有应用程序。

现在我需要使用这个 OpenID Connect 基础设施在 Web 应用程序 W 中实现单点登录功能。由于 W 在没有自己的用户和登录名的情况下基本上无法实际使用,因此我的计划是第一次在 OpenID Connect 用户和 W 用户之间创建映射,然后继续使用 SSO。

这个 Web 应用程序 W 将是 OpenID Connect 服务器的客户端。因此,W 将拥有此 OpenID Connect Server 的客户端凭据。

让我们说,OpenID Connect 服务器中的用户 id 是“jadamso”(o 表示 openid 连接)。而在 W 中,同一用户使用 id 'jadamsn'(n 表示本地)。

我的设计步骤

  1. 用户“jadamso”在此环境中的浏览器中访问 Web 应用程序 W(通过 URL)。让我们假设用户“jadamso”已经使用其他应用程序登录到环境中。
  2. Web 应用程序 W 将通过传递其客户端凭据向 OpenID Connect 服务器请求授权代码
  3. 然后 W 将通过传入身份验证代码从 OpenID Connect 服务器请求访问令牌(用于用户与 W 的 https 会话)。
  4. 然后 W 会从 userInfo API 中询问 'jadamso' 的用户信息
  5. 如果在 W 用户空间中没有找到用户 'jadamso' 的映射(对应用户),则将要求 'jadamso' 登录以建立链接(仅限一次)。在我们的示例中,这将是“jadamso”(在 OpenID Connect 服务器中)和“jadamsn”(在 Web 应用程序 W 中)之间的映射。
  6. 如果已经存在映射,即“jadamsn”,则 W 在浏览器中以用户“jadamsn”的身份启动 Web 会话
  7. 当 'jadamso(jadamsn)' 在 W 中点击注销时,我们结束了 W 的 web 会话。
  8. 当“jadamso”从 Open ID Connect 服务器注销时,我们可以选择在 Web 应用程序 W 中结束用户“jadamsn”的 Web 会话。

这个流程看起来合适吗?

我对整个事情并不是 100% 清楚,因为这是我第一次处理 OpenID Connect(甚至是 OAuth 2.0)。

任何其他设计理念都值得赞赏!

标签: oauth-2.0single-sign-onopenid-connect

解决方案


推荐阅读