OAuth2.0 基础介绍

1、应用场景

2、角色说明

3、OAuth2.0 概述

4、协议流程

5、四种授权模式

6、授权码模式

应用场景

这里以“简书”为例,网友希望在简书的文章下留言,但需要先登录。在登录页面,提供多种方式登录,例如:微博、微信、QQ账户等。减少了网友注册并管理多个账户的麻烦。但简书如何使用微博登录,获取用户信息并确保其数据不被泄露,这时 OAuth2.0 派上用场。

角色说明

1、Resource Owner

资源拥有者,能够许可对受保护资源的访问权限的实体。当资源所有者是个人时,它被称为最终用户。
2、Resource Server

资源服务器,管理受保护资源的服务器,能够接收和响应使用访问令牌对受保护资源的请求。例如,微博的资源服务器。
3、Client                

第三方应用客户端,资源拥有者发起对受保护资源的请求的应用程序。例如:简书。
4、Authorization Server 

授权服务器,在成功验证资源拥有者且获得授权后颁发访问令牌给客户端的服务器。例如,微博的授权服务器。

OAuth2.0 概述

OAuth2.0 授权框架允许第三方应用获取对 HTTP 服务的有限的访问权限,既可以以资源所有者名义在资源所有者和 HTTP 服务之间进行允许的交互,也可以允许第三方应用以自己的名义进行访问。本规范取代并淘汰 RFC5849 中描述的 OAuth 1.0 协议。(摘自:https://github.com/jeansfish/RFC6749.zh-cn/blob/master/index.md)

协议流程

OAuth 2.0 的协议流程如下图,摘自 RFC6749

上图是抽象的 OAuth 2.0 协议流程,描述了四种角色之间的交互,包括以下步骤:

  • (A)客户端从资源所有者处请求授权。授权请求可以直接向资源所有者发起,或者更可取的是通过授权服务器作为中介间接发起。
  • (B)客户端收到授权许可,这是一个代表资源所有者的授权的凭据,使用本规范中定义的四种许可类型之一或者使用扩展许可类型表示。授权许可类型取决于客户端请求授权所使用的方法以及授权服务器支持的类型。
  • (C)客户端与授权服务器进行身份认证并出示授权许可以请求访问令牌。
  • (D)授权服务器验证客户端身份并验证授权许可,若有效则颁发访问令牌。
  • (E)客户端从资源服务器请求受保护资源并出示访问令牌进行身份验证。
  • (F)资源服务器验证访问令牌,若有效则处理该请求。

客户端从资源所有者获得授权许可(步骤(A)和(B)所示)的更好方法是使用授权服务器作为中介,也就是授权码模式

四种授权模式

客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

授权码模式

授权码许可类型用于获得访问令牌和刷新令牌并且为受信任的客户端进行了优化。由于这是一个基于重定向的流程,客户端必须能够与资源所有者的用户代理(通常是Web浏览器)进行交互并能够接收来自授权服务器的传入请求(通过重定向)。

注:说明步骤(A)、(B)和(C)的直线因为通过用户代理而被分为两部分。
上图描述了授权码流程,包括以下步骤:

  • (A)客户端通过向授权端点引导资源所有者的用户代理开始流程。客户端包括它的客户端标识、请求范围、本地状态和重定向URI,一旦访问被许可(或拒绝)授权服务器将传送用户代理回到该URI。
  • (B)授权服务器验证资源拥有者的身份(通过用户代理),并确定资源所有者是否授予或拒绝客户端的访问请求。
  • (C)假设资源所有者许可访问,授权服务器使用之前(在请求时或客户端注册时)提供的重定向URI重定向用户代理回到客户端。重定向URI包括授权码和之前客户端提供的任何本地状态。
  • (D)客户端通过包含上一步中收到的授权码从授权服务器的令牌端点请求访问令牌。当发起请求时,客户端与授权服务器进行身份验证。客户端包含用于获得授权码的重定向URI来用于验证。
  • (E)授权服务器对客户端进行身份验证,验证授权代码,并确保接收的重定向URI与在步骤(C)中用于重定向(资源所有者的用户代理)到客户端的URI相匹配。如果通过,授权服务器响应返回访问令牌与可选的刷新令牌。

注:上述的应用场景使用了此模式,将在下一篇以示例说明。

原文地址:https://www.cnblogs.com/code-77-go/p/8494361.html

时间: 2024-11-07 23:10:20

OAuth2.0 基础介绍的相关文章

Zabbix 3.0 基础介绍 [一]

Zabbix 3.0 基础介绍 [一] zabbix 一.Zabbix介绍 zabbix 简介   Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利   zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案.   zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题

腾讯微博OAuth2.0认证介绍

腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台. 广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整个微博系统中,丰富多样的API接口和应用,加上您的智慧,将创造出无穷的应用和乐趣. 在使用腾讯微博平台提供的API前,您需要做以下两步工作: 成为开发者,并申请appkey和appsecret 授权获取accesstoken Accesstoken是第三方获得用户授权的凭证,是第三方访问api资源的

OAuth2.0基础概述

web:http://oauth.net/2/ doc:http://oauth.net/documentation/ code:http://oauth.net/code/ 之前做过QQ的联合登录与微信公众平台,基本流程参照文档,也没有太注意OAuth太多细节,最近在与携程会员对接,陆陆续续折腾好几天吧,就花了一点时间研究了下OAuth协议,感觉OAuth大行其道路,得益于微博的推广,另外OAuth与OpenID是比较容易混淆的两个东西,OpenID设计的目的趋向与身份校验,OAuth设计的目

Spring Cloud(5):保护微服务 - OAuth2.0的介绍

OAuth2是一个授权(Authorization)协议.我们要和Spring Security的认证(Authentication)区别开来,认证(Authentication)证明的你是不是这个人,而授权(Authorization)则是证明这个人有没有访问这个资源(Resource)的权限.下面这张图来源于OAuth 2.0 authorization framework RFC Document,是OAuth2的一个抽象流程. +--------+ +---------------+ |

Force.com微信开发系列(七)OAuth2.0网页授权

OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源(如用户个人信息.照片.视频.联系人列表),而无须将用户名和密码提供给第三方应用.本文将详细介绍OAuth协议以及在微信里的具体实现. OAuth2.0协议介绍 OAuth2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0. OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程. OAuth2.0允许用户提供一个令牌,而不是用户

创建自己的OAuth2.0服务端(一)

如果对OAuth2.0有任何的疑问,请先熟悉OAuth2.0基础的文章:http://www.cnblogs.com/alunchen/p/6956016.html 1. 前言 本篇文章时对 客户端的授权模式-授权码模式 的创建,当然你理解的最复杂的模式之后,其他模式都是在授权码模式上面做一些小改动即可.对于授权码模式有任何的疑问,请看上面提到的文章. 注意:本文是创建OAuth的Server端,不是Client请求端. 2. 开始授权码模式的概念.流程 第2点其实就是复制了上一篇文章,为了提高

使用微服务架构思想,设计部署OAuth2.0授权认证框架

1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是这些WebAPI并不在一台服务器上,甚至可能是第三方提供的WebAPI.同时处于系统安全的架构设计,后端WebAPI是不能直接暴露在外面的:另一方面,我们这个新产品还有一个C/S系统,C端登录的时候,要求统一到B/S端登录,可以从C端无障碍的访问任意B/S端的页面,也可以调用B/S系统的一些API,

OAuth2.0 在 SSO中的应用~

关于OAuth2.0的介绍,请看下面链接(讲的挺好的): http://blog.csdn.net/seccloud/article/details/8192707 我的理解: 一共四个角色,A:Client(访问者),B:资源拥有者,C:权限控制平台,D:资源中心 访问流程:Client(访问者)向 资源拥有者索要 资源访问权限, 资源拥有者 给 Client(访问者)开个授权书,Client(访问者)拿着授权书到  权限控制平台 索要访问令牌,Client(访问者)获取令牌,凭令牌访问资源.

开放平台鉴权以及OAuth2.0介绍

OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0不兼容1.0. 协议的参与者 RO (resource owner): 资源所有者,对资源具有授权能力的人. RS (resource server): 资源服务器,它存储资源,并处理对资源的访问请求. Client: 第三方应用,它获得RO的授权后便可以去访问RO的资源. AS (authoriz