这里写目录标题
- OAuth2.0是什么
- OAuth2.0协议体系的Roles角色
- OAuth定义了四个角色
- 资源所有者
- 资源服务器
- 客户端
- 授权服务器
- 传统的客户机-服务器身份验证模型的问题
- 协议流程
- 认证授权
- 授权码
OAuth2.0是什么
OAuth 2.0是用于授权的行业标准协议。OAuth 2.0专注于简化客户端开发人员,同时为web应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在IETF OAuth工作组内开发。OAuth 2.1是一项正在进行的工作,它将OAuth 2.0和许多常见扩展合并到一个新名称下。
OAuth 2.0授权框架允许第三方应用程序获取对HTTP服务的有限访问权限通过编排审批交互来代表资源所有者在资源所有者和HTTP服务之间,或者通过允许第三方应用程序以自己的名义获得访问权限。这规范取代并废弃了所描述的OAuth 1.0协议在RFC 5849。
OAuth2.0协议体系的Roles角色
OAuth定义了四个角色
OAuth2.0主要包含了四个角色类,如下图所示。
资源所有者
能够授予对受保护资源的访问权限的实体。当资源所有者是一个人时,它被称为终端用户。
资源服务器
承载受保护资源的服务器,能够接受并使用访问令牌响应受保护的资源请求。
客户端
发出受保护资源请求的应用程序资源所有者及其授权。“客户端”一词就是这样不暗示任何特定的实现特征(例如,应用程序是在服务器、桌面还是其他设备上执行设备)。
授权服务器
服务器向客户端发出访问令牌验证资源所有者并获取授权。授权服务器和资源服务器之间的交互超出了本规范的范围。授权服务器可以是与资源服务器相同的服务器,也可以是单独的实体。单个授权服务器可以发出访问令牌多个资源服务器。
传统的客户机-服务器身份验证模型的问题
在传统的客户机-服务器身份验证模型中请求访问受限的资源(受保护的资源),服务器通过使用资源所有者的服务器进行身份验证凭证。以便提供第三方应用程序访问受限制的资源,资源所有者与之共享其凭据第三方。这就产生了一些问题和限制。
- 需要第三方应用程序来存储该资源供将来使用的所有者凭据,通常是一个密码以明文。
- 服务器需要支持密码身份验证,尽管密码固有的安全弱点。
- 第三方应用程序对资源的访问过于广泛所有者受保护的资源,使资源所有者没有任何的有限子集限制持续时间或访问的能力资源。
- 资源所有者不能撤销对单个第三方的访问不得撤销所有第三方的访问权限,并且必须通过修改第三方密码。
- 任何第三方应用程序的泄露都会导致的泄露终端用户的密码以及受其保护的所有数据密码。
协议流程
上图中所示的抽象OAuth 2.0流描述了这四个角色之间的交互包括以下步骤:
- 客户端向资源所有者请求授权。的可以直接向资源所有者发出授权请求(如图所示),或者最好是间接通过授权服务器作为中介。
- 客户端接收授权授权,这是表示资源所有者授权的凭证,使用本规范中定义的四种授权类型之一或使用扩展授权类型表示。授权授予类型取决于客户端请求授权所使用的方法和授权服务器支持的类型。
- 客户端通过向授权服务器进行身份验证并提供授权授予来请求访问令牌。
- 授权服务器对客户端进行身份验证并验证授权授权,如果授权授权有效,则发出访问令牌。
- 客户端向资源服务器请求受保护的资源,并通过提供访问令牌进行身份验证。
- 资源服务器验证访问令牌,如果有效,则为请求提供服务。
认证授权
授权授予是表示资源的凭据的所有者授权(访问其受保护的资源)客户端获取访问令牌。该规范定义了四个
授权类型——授权代码、隐式、资源所有者密码凭据和客户端凭据——以及可扩展性定义附加类型的机制。
授权码
授权码通过授权服务器获取作为客户端和资源所有者之间的中介。而不是直接从资源所有者,即客户端请求授权将资源所有者定向到授权服务器,它反过来指导将资源所有者带授权码返回给客户端。
将资源所有者引导回客户端之前授权码,授权服务器对资源所有者,获取授权。因为资源所有者仅使用授权服务器(即资源)进行身份验证所有者的凭证永远不会与客户端共享。
授权码提供了一些重要的安全好处,例如验证客户端的能力,以及将访问令牌直接传输到客户端而无需
通过资源所有者的用户代理传递它,并且可能将其公开给其他人,包括资源所有者。