Oauth2 + Openid Connect,内部后端如何授权?
Auth2 + Open ID Connect, how to do authorization with internal backend?
我正在处理一个包含单页应用程序和后端服务的项目。访问此应用程序的唯一方法是通过一个登录帐户。我的 FE 通过 Oauth2 + Open ID Connect 与 One Login 集成以进行身份验证。
用户登录后,FE有Access Token和ID Token,所以我们可以得到一些用户信息如:email, name, ...这对于身份验证部分很好。
但是对于授权部分,FE需要传递一个token,这个token不仅包括用户信息,还包括用户角色等授权信息。 Access Token 或 ID Token 都没有此信息。
我目前的解决方案是:BE会提供一个API给FE把ID Token(从One Login得到的)换成一个内部的JWT token,里面有足够的授权信息,然后FE将用户内部与 BE 通信的令牌。我想知道这种方法是否存在任何安全风险,或者有更好的方法吗?
您 运行 the foreign token problem
,您发现第三方令牌对您自己的授权没有用。解决方案是控制发行您自己的访问令牌,您自己声明,就像您正在做的那样。
首选的长期选项是让您的应用程序重定向到授权服务器 (AS),并由它为您管理与 OneLogin 或其他身份提供者的连接。然后它将发行您可以控制其声明的代币。
这些链接可以让您了解一个好的 AS 的行为方式,同时使您的应用程序中的代码保持简单:
我正在处理一个包含单页应用程序和后端服务的项目。访问此应用程序的唯一方法是通过一个登录帐户。我的 FE 通过 Oauth2 + Open ID Connect 与 One Login 集成以进行身份验证。
用户登录后,FE有Access Token和ID Token,所以我们可以得到一些用户信息如:email, name, ...这对于身份验证部分很好。
但是对于授权部分,FE需要传递一个token,这个token不仅包括用户信息,还包括用户角色等授权信息。 Access Token 或 ID Token 都没有此信息。
我目前的解决方案是:BE会提供一个API给FE把ID Token(从One Login得到的)换成一个内部的JWT token,里面有足够的授权信息,然后FE将用户内部与 BE 通信的令牌。我想知道这种方法是否存在任何安全风险,或者有更好的方法吗?
您 运行 the foreign token problem
,您发现第三方令牌对您自己的授权没有用。解决方案是控制发行您自己的访问令牌,您自己声明,就像您正在做的那样。
首选的长期选项是让您的应用程序重定向到授权服务器 (AS),并由它为您管理与 OneLogin 或其他身份提供者的连接。然后它将发行您可以控制其声明的代币。
这些链接可以让您了解一个好的 AS 的行为方式,同时使您的应用程序中的代码保持简单: