资源服务器如何根据令牌识别用户?

Teo*_*r81 7 c# oauth-2.0

我试图了解 OAuth 2 的工作原理。我不明白这一点:如果授权服务器和资源服务器不是同一个系统,如下图所示:

在此输入图像描述

资源服务器如何知道用户是谁,有哪些权限?我可以从访问令牌检索这些信息还是我必须在授权服务器和资源服务器之间进行后端通信?

ian*_*man 4

资源服务器如何使用令牌取决于令牌的类型。

自编码访问令牌令牌(例如 JWT 不记名令牌)将包含令牌中的所有用户和范围信息。或者一些 Auth 系统使用令牌内省,如 Jan 的答案中详述。

这是对资源服务器和令牌类型的很好的介绍。

一个非常常见的自编码令牌是JWT 令牌

以自编码访问令牌为例:

访问令牌将包含上例中颁发的令牌的用户标识符和范围/权限 - 这是“隐式”授予类型。

资源服务器不需要联系身份验证服务器。这可能是 API 的 Oauth 2.0 的主要优势之一。但它必须信任它。它应该确认令牌已由身份验证服务器签名,并且如果由身份验证服务器加密,它可能还需要能够解密令牌。

显然,资源服务器需要能够访问令牌中用户的数据。可能是认证服务器和资源服务器指向同一个底层数据库。