首页 > 解决方案 > Auth2 + Open ID Connect,如何使用内部后端进行授权?

问题描述

我正在处理一个包含单页应用程序和后端服务的项目。访问此应用程序的唯一方法是通过 One Login 帐户。我的 FE 通过 Oauth2 + Open ID Connect 与 One Login 集成以进行身份​​验证。

用户登录后,FE 有Access TokenID Token,所以我们可以得到一些用户信息,比如:email, name,... 这对于身份验证部分来说很好。

但是对于授权部分,FE 需要传递一个令牌,令牌不仅包括用户信息,还包括用户角色等授权信息。Access TokenID Token都没有此信息。

我目前的解决方案是:BE 将提供一个 API 给 FE 将 ID Token(它从 One Login 获得)交换为具有足够授权信息的内部 JWT 令牌,然后 FE 将使用内部令牌与 BE 进行通信。我想知道这种方法是否存在任何安全风险,或者有什么更好的方法?

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

解决方案


您遇到了the foreign token problem,您发现第三方令牌对您自己的授权没有用处。解决方案是像您一样控制发布您自己的访问令牌,并使用您自己的声明。

首选的长期选项是让您的应用程序重定向到授权服务器 (AS),并让它为您管理与 OneLogin 或其他身份提供者的连接。然后它将发行您可以控制其声明的令牌。

这些链接可以让您了解一个好的 AS 的行为方式,同时保持应用程序中的代码简单:


推荐阅读