Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security OAuth2协议中的作用域处理_Security_Oauth_Oauth 2.0_Scopes - Fatal编程技术网

Security OAuth2协议中的作用域处理

Security 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服务

我有一个关于如何处理OAuth2协议中的作用域的一般性问题。为了便于论证,让我们从一个具体的例子开始:

假设我有一个OAuth服务器A,我想使用它来保护两个RESTful API
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)的功能似乎是个好主意。那么服务器真的需要知道受保护服务所需的所有作用域吗?谢谢你的回答!