OAuth2协议中的范围处理

时间:2015-09-23 21:47:58

标签: security oauth oauth-2.0 scopes

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

假设我有一个OAuth服务器A,我想使用它来保护两个RESTful API R1R2。这两个服务具有特殊范围,用于授予用户对某些受保护资源的访问权限。因此,我们假设R1需要范围S1R2需要范围S2才能访问某些受限制的资源。

让我们进一步假设OAuth服务器A还使用了范围emailprofile,他们需要访问OAuth服务器本身管理的用户数据。

现在这是我无法理解的。据我所知,OAuth服务器A通常只知道如何处理他自己使用的范围(在本例中为emailprofile)。但是,访问两个API上的受限功能所需的范围又如何(R1需要S1R2需要S2)?

我是否必须使用OAuth服务器手动注册这些范围(以便它知道它们存在并且可以在需要时授予它们)?这又意味着我需要使用OAuth服务器注册我想要保护/使用的所有API的所有范围。

这些假设是否正确?如果我在这里弄错了,也许有人可以通过解释如何正常实施整个范围处理来帮助我。我试图谷歌oauth2和范围,但似乎没有很好的解释协议中的范围如何处理。

1 个答案:

答案 0 :(得分:2)

由于OAuth2授权服务器A负责颁发访问令牌,并且访问令牌被授予特定范围,因此让A了解{{S1是合理的。 1}}和S2

这并非完全必要,A可以将范围视为&#34;不透明&#34;字符串并不在意,但使用A注册作用域使您能够检查所请求的作用域是否存在(并且不是一些随机字符串),并在向用户显示的提示中显示更有意义的消息在授权流程中(&#34;您是否允许&#34; OAuth2客户端&#34;访问您的R1数据,这意味着blablabla&#34;而不是&#34;您是否授予访问S1&#34;)。< / p>