OAuth2 协议中的范围处理
Scope handling in OAuth2 protocol
我有一个关于如何处理 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 服务器注册我想要 protect/use 的所有 API 的所有范围。
这些假设是否正确?如果我在这里弄错了,也许有人可以通过解释通常如何实现整个范围处理来帮助我。我尝试 google oauth2 和范围,但似乎没有很好的解释协议中范围的处理方式。
由于 OAuth2 授权服务器 A
负责颁发访问令牌,并且访问令牌是在特定范围内授予的,因此让 A
了解 S1
和 S2
.
这不是完全必要的,A
可以将范围视为 "opaque" 字符串而不在乎,但是使用 A
注册范围让您能够检查请求的范围是否存在(并且不是一些随机字符串),以及在授权流程中向用户显示的提示中显示更有意义的消息("Do you allow "OAuth2 客户端“访问您的 R1 数据,这意味着 blablabla”而不是 "Do you grant access to S1").
我有一个关于如何处理 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 服务器注册我想要 protect/use 的所有 API 的所有范围。
这些假设是否正确?如果我在这里弄错了,也许有人可以通过解释通常如何实现整个范围处理来帮助我。我尝试 google oauth2 和范围,但似乎没有很好的解释协议中范围的处理方式。
由于 OAuth2 授权服务器 A
负责颁发访问令牌,并且访问令牌是在特定范围内授予的,因此让 A
了解 S1
和 S2
.
这不是完全必要的,A
可以将范围视为 "opaque" 字符串而不在乎,但是使用 A
注册范围让您能够检查请求的范围是否存在(并且不是一些随机字符串),以及在授权流程中向用户显示的提示中显示更有意义的消息("Do you allow "OAuth2 客户端“访问您的 R1 数据,这意味着 blablabla”而不是 "Do you grant access to S1").