美文网首页
Oauth2协议简介

Oauth2协议简介

作者: 王翔宇sapiens | 来源:发表于2018-03-20 22:23 被阅读0次

OAuth是一个关于授权的开放网络标准,目前的版本是2.0。通过这个网络标准,一个第三方应用(客户端)可以获取资源所有者(用户)服务提供商(为用户提供服务的服务商)保存的特定资源。在这个标准中,第三方应用不能直接登录服务提供商资源所有者只负责做是否授权以及授权哪些资源的决策,根据决策结果,第三方应用可以获得有时效、有授权范围的令牌,并通过令牌从服务供应商那里获得特定的资源。

整片文章分为两部分,这一部分介绍OAuth2的原理。下一篇会介绍一种基于SpringSecurity5的实现方式。

主要参考材料为:RFC_6749

1 OAuth2介绍

1.1 角色(Roles)

1、resource owner---资源所有者,也可以被称为“用户”

2、resource server---资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

3、client | relying party---第三方应用,希望获得资源所有者数据的服务方,也会被称为“客户端”

4、authorization server | open id provider---认证服务器,负责认证用户的身份,在用户授权之后,会将令牌发送给客户端

1.2 流程(Protocol Flow)

Protocol Flow

(A)用户在使用客户端,客户端向用户提出要用户授权客户端的请求。

(B)用户首先通过认证服务器的身份认证,然后在认证服务器完成对客户端的授权。

(C)客户端使用上一步获得的授权,向认证服务器申请令牌。

(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

(E)客户端使用令牌,向资源服务器申请获取资源。

(F)资源服务器确认令牌无误,同意向客户端开放资源。

1.3 被授权的授权(Authorization Grant)

这里grant是名词的含义,指的是通过用户的授权行为,客户端获得的"能够用来从认证服务器获取令牌(Accees token)"的凭证(Authorization Grant)。有四种方式,在看这四种方式的具体流程之前,最好先看下1.4章,理解token。

1.3.1 授权码模式(Authorization Code)

授权码模式用于获取访问令牌和刷新令牌,并针对机密客户端进行了优化。由于这是基于重定向的流程,客户端必须能够与资源所有者的用户代理(通常是Web浏览器)进行交互,并能够从授权服务器接收传入的请求(通过重定向)。

User-Agent一般指浏览器

Authorization Code Flow

(A)用户访问客户端,客户端重定向到认证服务器。

(B)用户通过身份认证,然后决策授权的范围以及时限。

(C)认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。

(D)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。

(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。

下面三种方式不太常用,这里就不做详细介绍了。

1.3.2 简化模式(Implicit)

1.3.3 密码模式(Resource Owner Password Credentials)

1.3.4 客户端模式(Client Credentials)

1.4 访问令牌(Access Token) & 更新令牌(Refresh Token)

1.4.1 访问令牌

访问令牌是用于访问受保护资源的凭据。访问令牌是发布给客户端的授权的字符串,表示资源所有者对特定范围和持续时间进行的授权,并由资源服务器和授权服务器来保证授权的正确实施。

1.4.2 更新令牌

刷新令牌是用于获取访问令牌的凭据。刷新令牌由授权服务器颁发给客户端,并用于在当前访问令牌变得无效或过期时获取新的访问令牌,或者获得具有相同或更窄范围的附加访问令牌(访问令牌可能具有较短的生命周期和比资源所有者授权的权限更少)。颁发刷新令牌是可选的,由授权服务器自行决定。如果授权服务器发出刷新令牌,则在发出访问令牌时被包括。刷新令牌是表示资源所有者授予客户端的授权的字符串。
授权信息。与访问令牌不同,刷新令牌仅用于授权服务器,并且不会发送到资源服务器。

Refreshing an Expired Access Token

(A)用户在使用客户端,客户端向用户提出要用户授权客户端的请求。

(B)用户首先通过认证服务器的身份认证,然后在认证服务器完成对客户端的授权。

(C)客户端使用访问令牌,向资源服务器发起请求。

(D)资源服务器返回,被请求的资源。

(E)客户端使用访问令牌,向资源服务器发起请求。

(F)资源服务器发现令牌有问题,返回错误。

(G)客户端使用更新令牌,向授权服务器发起请求,希望获取新的访问令牌。

(H)授权服务器返回新的访问令牌。

相关文章

  • OAuth2理解

    OAuth2简介 什么是OAuth2 OAuth2是一个工业级标准的授权协议。 用于REST/API的代理授权框架...

  • Spring OAuth2(JDBC)

    一、Spring OAuth2 Spring OAuth2是OAuth2协议的完整实现,如果你对OAuth2协议不...

  • Oauth2协议简介

    OAuth是一个关于授权的开放网络标准,目前的版本是2.0。通过这个网络标准,一个第三方应用(客户端)可以获取资源...

  • OAuth原理

    Oauth2简介 OAuth2是一个行业的标准授权协议,他能简化客户端开发,同时为多种客户端提供标准的授权流程。它...

  • OAuth2基本概念

    OAuth2 基础概念 标签(空格分隔): OAuth2 什么是OAuth2 ? OAuth2.0是OAuth协议...

  • SAML和OAuth2这两种SSO协议的区别

    简介 SSO是单点登录的简称,常用的SSO的协议有两种,分别是SAML和OAuth2。本文将会介绍两种协议的不同之...

  • OAuth2

    OAuth2是工业标准的授权协议。OAuth2取代了在2006创建的原始OAuthTM协议所做的工作。OAuth2...

  • Spring security oauth2认证流程分析

    这几天一直在研究oauth2协议,打算按照oauth2协议做一个认证服务,使用了spring security o...

  • SpringSecurity+Oauth2【授权码模式】+增强J

    阅读本章节需要掌握springsecurity、oauth2协议、jwt 本次测试使用oauth2的授权码模式进行...

  • 基于OAuth2的OIDC (OpenId Connect) 身

    OIDC协议 OIDC(OpenID Connect)是在OAuth2上构建了一个身份层,是一个基于OAuth2协...

网友评论

      本文标题:Oauth2协议简介

      本文链接:https://www.haomeiwen.com/subject/zttgsxtx.html