Oauth 2.0 如何在Oauth2中处理以下场景?

Oauth 2.0 如何在Oauth2中处理以下场景?,oauth-2.0,Oauth 2.0,假设我的API如下所示: /app/user_info /app/car_info 该系统可以创建不同的分支机构,例如:部门、附属机构,在我们的系统中,它是分支学校 假设我们有: BranchA BranchB API是分支,它将根据当前登录用户选择的当前分支id显示数据,当前登录用户在前端切换不同的分支 现在,我们有一个用户可以访问BranchA中的所有API。 同时,如果用户只能访问/app/User\u info,则用户在分支中访问API的权限是有限的 1 User - BranchA

假设我的API如下所示:

/app/user_info
/app/car_info
该系统可以创建不同的分支机构,例如:部门、附属机构,在我们的系统中,它是分支学校

假设我们有:

BranchA
BranchB
API是分支,它将根据当前登录用户选择的当前分支id显示数据,当前登录用户在前端切换不同的分支

现在,我们有一个用户可以访问BranchA中的所有API。 同时,如果用户只能访问/app/User\u info,则用户在分支中访问API的权限是有限的

1 User - BranchA -  /app/user_info,app/car_info
2 User - BranchB -  /app/user_info
那么,如何应对类似的情况呢? 每个分支将对应于不同的访问令牌,并且范围也不同。那么我是否需要在一次授权中为用户分配多个令牌?根据OAUTH2,这是不可能的。
为了解决这个问题,我想我需要分配一个新的访问令牌&当用户切换到不同的分支时刷新令牌?但是如何分配一个新的令牌而不需要用户重新登录,这是我想问的问题。对于这种情况,我几乎没有oauth2的经验。

OAuth不会为您提供域特定授权的解决方案

您通常需要在应用程序逻辑中对其进行管理,如下所示:

让OAuth登录专注于识别用户,这将导致包含用户id的访问令牌 在应用程序数据中,将用户或角色映射到允许的分支 设计API以包含分支ID 当API收到请求时,从令牌中查找用户,并验证登录的用户是否有权访问分支 例如:

从/branchs获取分支列表,这些分支将在令牌中为用户返回这些分支 从/branchs/{id}/car_info获取分支数据-如果令牌中的用户无权访问请求的分支,则将返回403禁止响应
我认为,客户端访问API的规则应该在访问令牌范围内更好地定义,因此,如果用户在前端将分支切换到另一个分支,那么最好生成另一个合格的访问令牌?这是一个更好的选择吗?例如:/api/switch branch/branchId/。在这个api中,服务器将使客户端凭据向oauth提供者授予oauth访问权,以便为用户获取新的访问令牌和刷新令牌?我将在较高级别上使用作用域,但如果存在大量分支,您可能很难为每个分支拥有单独的作用域并管理随时间的变化。如果您是从具有客户端机密的后端启动客户端凭据,则客户端凭据可能对您有效—但是这种类型的令牌将没有用户id。没有神奇的解决方案—了解每个OAuth流的限制并进行相应的设计。您需要一种原始的方法来识别用户-通常基于登录。在您的示例中,“switch branch”是一个API调用,API不发出令牌。获取新令牌的唯一方法是通过OAuth流,它们都不能通过这种方式定制。您可以通过双跳:UI调用后端来有条件地发布令牌,该后端使用客户端凭据流,然后调用目标API,并通过REST参数(通常是路径段)提供用户id。通常,我推荐这种将关注点分开的方法而且很容易改变——尽管[我的博客文章]描述了这一点,但这可能超出了你想要处理的范围