如何使用OAuth为API生态系统定义作用域?

如何使用OAuth为API生态系统定义作用域?,oauth,oauth-2.0,api-design,scopes,Oauth,Oauth 2.0,Api Design,Scopes,作为OAuth API生态系统的创建者,您希望允许通过可附加到访问令牌的作用域访问API。因此,我的问题是: 如何定义范围 您希望您定义的任何作用域只提供对单个API中的资源/方法的访问,还是一个作用域应该包括跨多个API的访问 您在API定义文件(如Swagger/OAS或RAML)中定义作用域的可能性有多大 范围是否应该在特定API的上下文之外定义,作为单独的OAuth管理工具的一部分,以及IdP注册和客户端应用程序创建之类的内容 我意识到在这方面可能有几种可能的答案和观点——这正是我所

作为OAuth API生态系统的创建者,您希望允许通过可附加到访问令牌的作用域访问API。因此,我的问题是:

  • 如何定义范围
  • 您希望您定义的任何作用域只提供对单个API中的资源/方法的访问,还是一个作用域应该包括跨多个API的访问
  • 您在API定义文件(如Swagger/OAS或RAML)中定义作用域的可能性有多大
  • 范围是否应该在特定API的上下文之外定义,作为单独的OAuth管理工具的一部分,以及IdP注册和客户端应用程序创建之类的内容
我意识到在这方面可能有几种可能的答案和观点——这正是我所寻找的


谢谢你的帮助

我的OAuth2服务器能够创建任意作用域。作用域类似于“角色”,它们描述功能组

OAuth2服务器基本上不知道这些作用域是什么。API资源服务器接收承载令牌,并根据承载令牌找出与其关联的作用域,并决定用户可以和不能使用该作用域做什么,但对于OAuth2服务器,它们是不透明的字符串


我们不使用swagger/RAML。

谢谢-对于任意作用域,如何将特定的API函数与系统中的给定作用域相关联?不同的资源服务器定义自己的映射。假设范围(对我们来说)是一个角色,那么角色是由与之关联的各个权限定义的。这是在一个业务逻辑层中完成的,而不是一个接近理解HTTP URL和方法的表面的层。事实上,有些东西有一个HTTP url、方法、主体和头,这是一个实现细节。