OAuth2授权类型详解
1. OAuth2概述
初看OAuth2时,你可能觉得它并不复杂。毕竟,有一个认证服务来检查用户的凭证并向用户颁发令牌,用户每次调用受OAuth2服务器保护的服务时出示该令牌即可。然而,现实世界并非如此简单。随着Web和基于云的应用程序的互联性增强,用户期望能够在不同服务拥有的不同应用程序之间安全地共享数据并集成功能。这从安全角度带来了独特的挑战,因为你希望在不同应用程序之间进行集成,同时又不强迫用户与每个想要集成的应用程序共享其凭证。
OAuth2是一个灵活的授权框架,它提供了多种机制,使应用程序能够在不强迫用户共享凭证的情况下对用户进行身份验证和授权。这些身份验证机制被称为认证授权(authentication grants)。OAuth2有四种形式的认证授权,客户端应用程序可以使用这些授权来对用户进行身份验证、接收访问令牌,然后验证该令牌。这四种授权类型分别是:
- 密码授权(Password)
- 客户端凭证授权(Client credential)
- 授权码授权(Authorization code)
- 隐式授权(Implicit)
下面将详细介绍每种授权类型的执行过程以及何时使用哪种授权类型。
2. 密码授权(Password grants)
密码授权可能是最容易理解的OAuth2授权类型。当应用程序和服务之间存在明确的信任关系时,会使用这种授权类型。例如,EagleEye Web应用程序和EagleEye Web服务(许可和组织服务)都由ThoughtMechanix拥有,因此它们之间存在自然的信任关系。这里的“自然信任关系”是指应用程序和服务完全由同一