OAuth2.0是如何实现授权的?

How does OAuth2.0 implements authorization?

我正在研究这个话题,据我了解,OAuth 2.0 应该是一种用于在 Web 服务器中进行用户授权的协议。当涉及到身份验证时,它非常简单 - 客户端向身份提供者发送请求,接收包含附加信息的令牌(例如 JWT),然后他将该令牌发送到应用程序服务器,应用程序服务器使用身份提供者。一切都很好,直到这里。

我的问题是授权——知道用户在应用程序服务器中拥有哪些权限。据我了解,请求的 "scope" 部分是指用户允许应用服务器在身份提供者中对其实体执行的操作,因此它是授权,但它仅授权应用服务器。

该协议是否包含应用服务器授权客户端的任何方式,或者它假设每个用户的角色和范围等数据将由应用服务器管理?我想这些数据可以由身份提供者在令牌上发送,但是身份提供者如何管理每个用户的权限?它是协议的一部分吗?如果不是,为什么叫"authorization protocol"?

OAuth2 的目的是允许客户端应用程序代表用户调用 API 服务器。范围定义了客户端应用程序可以对该 API 服务器上的用户数据执行的操作。这称为委托授权,因为用户将某些权限委托给客户端应用程序。

现在一些授权服务器允许您为资源服务器定义角色,并将这些作为声明包含在访问令牌中。如何解释这些角色是授权服务器和资源服务器之间的隐式合同。角色不属于 OAuth2 RFC.

除了 MvdD 所说的,授权意味着用户授予客户端应用程序一些访问该用户拥有的受保护资源的权限。

当用户被发送到授权服务器进行身份验证时,授权服务器应该会询问类似以下内容的内容,"Do you allow this client application access to your protected resource?" 有时您会看到它 "X application wants to see your email, address, phone number, ..."

范围指定允许的操作。允许客户端应用程序访问受保护资源的访问令牌。资源服务器应该只允许与访问令牌中的范围关联的操作。