OAuth 2.0 授权服务器和访问令牌

OAuth 2.0 Authorization Server and Access Tokens

我目前正在研究 OAuth 2.0 和 OpenID Connect,我对授权服务器和访问令牌有疑问。规范将授权服务器定义为:

The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.

据我了解,客户端将用户重定向到授权服务器,用户在授权服务器上对自己进行身份验证,授权服务器向客户端颁发访问令牌。

现在来了一件我到现在都无法理解的事情。有两种可能的方法来理解这一点,我正在尝试找到正确的方法:

  1. 授权服务器颁发包含用户声明的访问令牌。带有用户声明的访问令牌随每个请求一起发送到资源服务器,资源服务器能够读取这些声明并基于此允许或拒绝对资源的访问。

  2. 授权服务器发出的访问令牌已经包含允许或拒绝访问资源服务器上的资源的明确指令。资源服务器因此只读取此信息以查看用户是否可以做某事。

第一个选项似乎是正确的理解方式。在这种情况下,授权服务器将管理用户的声明并颁发仅包含声明(如生日、年龄、角色等)的令牌。这反过来又赋予了资源服务器另一项职责:根据声明决定资源是否可用。

第二个选项的局限性要大得多。授权服务器需要为每个资源发出授权,而不仅仅是发出声明,令牌可能会变得非常沉重,管理这种复杂性似乎很难。

那么我的理解对吗?因此,授权负责管理用户声明并发布仅包含声明的令牌?另一方面,资源服务器负责根据声明允许或不允许对资源的访问?

访问令牌不包含用户的声明,但 ID token 包含。

授权服务器负责管理访问令牌,但不一定要管理用户的声明。应该有一个单独的服务器来管理用户的声明。

没有。 2 听起来很奇怪,因为访问令牌的存在意味着“已授予授权”。

OAuth 2.0(RFC 6749) is a specification for authorization. OpenID Connect身份验证的规范。不要混淆。