Oauth 2.0 除作用域外,还基于授予类型限制对资源的访问

Oauth 2.0 除作用域外,还基于授予类型限制对资源的访问,oauth-2.0,Oauth 2.0,据我了解:- oauth客户端可以获得的作用域是针对授权服务器上的客户端注册的 客户端可以使用的授权类型是针对授权服务器上的客户端注册的 资源配置为允许包含与某些作用域关联的访问令牌的请求 在vanilla OAuth中是否有一种机制,在限制端点时除了使用作用域外还使用授权类型 例如,给定范围=组织、映像和授权类型=客户端凭据、身份验证代码的客户端: (在令牌创建时) 客户端A要获取“组织”作用域的访问令牌,只能使用客户端凭据授予类型 对于客户端A,要获取“映像”作用域的访问令牌,只能使用

据我了解:-

  • oauth客户端可以获得的作用域是针对授权服务器上的客户端注册的

  • 客户端可以使用的授权类型是针对授权服务器上的客户端注册的

  • 资源配置为允许包含与某些作用域关联的访问令牌的请求

在vanilla OAuth中是否有一种机制,在限制端点时除了使用作用域外还使用授权类型

例如,给定范围=组织、映像和授权类型=客户端凭据、身份验证代码的客户端:

(在令牌创建时)

  • 客户端A要获取“组织”作用域的访问令牌,只能使用客户端凭据授予类型

  • 对于客户端A,要获取“映像”作用域的访问令牌,只能使用身份验证代码授权类型

或者(当它调用资源端点时)

  • 当使用包含预期“组织”作用域的访问令牌调用/organization终结点时,仅当客户端凭据授予类型用于获取访问令牌时才允许请求(如果使用任何其他授予类型,则失败)

  • 当使用访问令牌调用/images端点以包含预期的“images”作用域时,仅当使用身份验证代码授权类型来获取访问令牌时才允许请求(如果使用任何其他授权类型,则失败)

据我所知,作用域仅限于为客户端注册的内容

我能想到的实现上述目标的唯一方法是为同一实际客户机(A)进行两次客户机注册(例如b、c),并为客户机凭据授权类型和组织范围配置客户机“b”,为身份验证代码授权类型和图像范围配置客户机“c”

更新

一个选项是沿着OIDC线路添加角色范围,这意味着角色声明将添加到访问令牌中。然后可以检查访问令牌,以查看角色是第三方(客户端凭据授予)还是用户(身份验证代码授予)。
我仍然有兴趣知道oauth中是否有任何特定的内置内容可以通过授权类型进行限制。

令牌通常不会记录授权信息,实际上需要能够根据调用方的权限控制每个应用程序的访问

我总是为不同的授权类型配置不同的OAuth客户机,因为它们是不同的逻辑客户机,永远不能共享会话

一些可能的选择:

  • 备选案文1。如果您的授权服务器支持,请使用多个API,每个API都有一个,并为不同的OAuth客户端配置不同的访问群体

  • 备选案文2。API端点可能会根据允许的客户端ID列表检查访问令牌中的客户端ID,尽管这不是一个好的长期选项

  • 备选案文3。使用OAuth仅识别调用方,然后查找在应用程序数据中存储和管理的调用方权限。这几乎总是最好的长期选择

OAuth只提供高级授权机制,当您进入更深层次的特定于域的授权(例如角色的含义或检查足够资金等规则)时,它不会帮助您

我喜欢您使用角色的想法,根据经验,我会这样管理角色:

  • 首先通过作用域等进行高级OAuth授权
  • 从令牌的声明中识别调用方
  • 在应用程序数据中查找调用者的角色
  • 在API逻辑中强制执行角色的授权规则

谢谢,证实了我的想法。