什么是OAuth授权类型?
OAuth授权类型确定OAuth进程中涉及的步骤的确切顺序。授权类型还影响客户端应用程序在每个阶段与OAuth服务通信的方式,包括访问令牌本身的发送方式。因此,授权类型通常被称为“OAuth流”。
在客户端应用程序可以启动相应的流之前,必须将OAuth服务配置为支持特定的授权类型。客户机应用程序指定要在发送给OAuth服务的初始授权请求中使用的授权类型。
有几种不同的授予类型,每种类型都有不同程度的复杂性和安全性考虑。我们将重点讨论“授权代码”和“隐式”授权类型,因为它们是目前最常见的授权类型。
OAuth scopes
对于任何OAuth授权类型,客户机应用程序都必须指定要访问的数据以及要执行的操作类型,它使用它发送给OAuth服务的授权请求的scope参数来实现这一点。
对于基本OAuth,客户端应用程序可以请求访问的范围对于每个OAuth服务都是唯一的。由于作用域的名称只是一个任意文本字符串,因此不同的提供程序之间的格式可能会有很大的差异。有些甚至使用完整URI作为作用域名称,类似于REST API端点。例如,当请求对用户的联系人列表进行读取访问时,根据所使用的OAuth服务,作用域名称可能采用以下任何形式:
scope=contacts
scope=contacts.read
scope=contact-list-r
scope=https://oauth-authorization-server.com/auth/scopes/user/contacts.readonly
然而,当OAuth用于身份验证时,通常使用标准化的OpenID连接作用域。例如,scope openid概要文件将授予客户机应用程序对预定义的用户基本信息集的读取权限,例如他们的电子邮件地址、用户名等。稍后我们将进一步讨论OpenID Connect。
Authorization code grant type
授权代码授权类型最初看起来相当复杂,但实际上比您熟悉一些基本知识后想象的要简单。
简言之,客户机应用程序和OAuth服务首先使用重定向来交换一系列基于浏览器的HTTP请求,以启动流。询问用户是否同意请求的访问。如果他们接受,客户端应用程序将被授予“授权代码”。然后,客户端应用程序与OAuth服务交换该代码以接收“访问令牌”,它们可以使用该令牌进行API调用以获取相关的用户数据。
从代码/令牌交换开始发生的所有通信都通过一个安全、