Security OAuth2协议中的作用域处理
我有一个关于如何处理OAuth2协议中的作用域的一般性问题。为了便于论证,让我们从一个具体的例子开始: 假设我有一个OAuth服务器A,我想使用它来保护两个RESTful APISecurity OAuth2协议中的作用域处理,security,oauth,oauth-2.0,scopes,Security,Oauth,Oauth 2.0,Scopes,我有一个关于如何处理OAuth2协议中的作用域的一般性问题。为了便于论证,让我们从一个具体的例子开始: 假设我有一个OAuth服务器A,我想使用它来保护两个RESTful APIR1和R2。这两个服务具有特殊的作用域,用于授予用户对某些受保护资源的访问权限。因此,假设R1需要作用域S1,R2需要作用域S2,以便访问一些受限资源 让我们进一步假设OAuth服务器A也使用作用域email和profile,它们是访问OAuth服务器本身管理的用户数据所必需的 这是我很难理解的。据我所知,OAuth服务
R1
和R2
。这两个服务具有特殊的作用域,用于授予用户对某些受保护资源的访问权限。因此,假设R1
需要作用域S1
,R2
需要作用域S2
,以便访问一些受限资源
让我们进一步假设OAuth服务器A
也使用作用域email
和profile
,它们是访问OAuth服务器本身管理的用户数据所必需的
这是我很难理解的。据我所知,OAuth服务器A
通常只知道如何处理自己使用的范围(在本例中是email
和profile
)。但是,访问两个API上的受限功能所需的作用域是什么(R1
需要S1
和R2
需要S2
)
我是否必须向OAuth服务器手动注册这些作用域(以便它知道它们存在,并在需要时授予它们)?这同样意味着我需要使用OAuth服务器注册我想要保护/使用的所有API的所有作用域
这些假设正确吗?如果我在这里出错,也许有人可以帮助我解释整个范围处理通常是如何实现的。我试着用谷歌搜索oauth2和作用域,但似乎没有很好的解释说明在协议中如何准确地处理作用域。因为oauth2授权服务器负责发出访问令牌,并且访问令牌被授予特定的作用域,让
A
注意S1
和S2
听起来很合理
这不是完全必要的,
A
可以将作用域视为“不透明”字符串,而不必在意,但是将作用域注册到A
可以让您检查所请求的作用域是否存在(并且不是一些随机字符串),以及在授权流程中向用户显示的提示中显示一条更有意义的消息(“您是否允许“OAuth2客户端”访问您的R1数据,这意味着Blabla”,而不是“您是否授予S1访问权限”)。总结一下,在OAuth服务器a
中实现允许管理作用域(CRUD)的功能似乎是个好主意。那么服务器真的需要知道受保护服务所需的所有作用域吗?谢谢你的回答!