oauth-2.0 - 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 表示本地)。
我的设计步骤
- 用户“jadamso”在此环境中的浏览器中访问 Web 应用程序 W(通过 URL)。让我们假设用户“jadamso”已经使用其他应用程序登录到环境中。
- Web 应用程序 W 将通过传递其客户端凭据向 OpenID Connect 服务器请求授权代码
- 然后 W 将通过传入身份验证代码从 OpenID Connect 服务器请求访问令牌(用于用户与 W 的 https 会话)。
- 然后 W 会从 userInfo API 中询问 'jadamso' 的用户信息
- 如果在 W 用户空间中没有找到用户 'jadamso' 的映射(对应用户),则将要求 'jadamso' 登录以建立链接(仅限一次)。在我们的示例中,这将是“jadamso”(在 OpenID Connect 服务器中)和“jadamsn”(在 Web 应用程序 W 中)之间的映射。
- 如果已经存在映射,即“jadamsn”,则 W 在浏览器中以用户“jadamsn”的身份启动 Web 会话
- 当 'jadamso(jadamsn)' 在 W 中点击注销时,我们结束了 W 的 web 会话。
- 当“jadamso”从 Open ID Connect 服务器注销时,我们可以选择在 Web 应用程序 W 中结束用户“jadamsn”的 Web 会话。
这个流程看起来合适吗?
我对整个事情并不是 100% 清楚,因为这是我第一次处理 OpenID Connect(甚至是 OAuth 2.0)。
任何其他设计理念都值得赞赏!
解决方案
推荐阅读
- reactjs - React-JS / react-router-dom 中的路由问题
- ruby-on-rails - Rails 5 以一种形式创建同一模型的多个记录,未知属性错误
- css - 如何在 IE 11 中显示:grid div 以占据整个屏幕?(100vh 似乎不起作用)
- html - 为什么我的 HTML 表格不遵守指定的布局?
- web-traffic - 如何在给定时间获得给定网址(不在我的网站上)的多次点击?
- javascript - 如何从 3rd 方 api 中提取数据并使用 javascript 将其显示在我的页面上?
- javascript - 反应将增量数据传递给父级
- agens-graph - 如何在 AgensGraph 上使用“分组依据”查询?
- postgresql - How to ALTER ROLE for many roles?
- javascript - How to select an anchor element based on some text in the URL?