身份认证系统(四)OAuth2运行流程

上一节介绍过什么是OAuth2,这节准备用生动的事例来告诉大家OAuth2运行的流程。
我们来想这样一个场景:假设我们有一个叫做万方网盘的服务是用来帮助用户存储论文文档的,我们向外提供了符合OAuth2标准的APi,可以让第三方程序获取到用户的论文。有一个第三方的程序可以调用我们平台的接口获取用户论文,来帮助用户投稿。

在OAuth中,我们管用户叫做资源拥有者(Resource Owner,RO),投稿应用叫做Client,万方网盘叫做资源服务(Resource Server,RS),昨天我们还提到的一个发放令牌的角色叫做授权服务(Authorization Server,AS)。

以下是OAuth2的基本运行流程:

0、Resource Owner向Cilent发出某个请求,这个请求需要调用Resource Owner的用户资源。

1、Client为了能够拿到用户的资源,就要先获取用户的授权。

2、client拿着用户授权向Authorization Server请求访问令牌(Access Token)

3、然后client再拿着访问令牌去向Resource Server获取用户资源

这就是一个完整的OAuth流程,放一张官方的图给大家看:

其实当第一次完成A到D的四个步骤之后,client再要去请求资源的时候,就直接拿着Access Token去请求就可以了,不需要每次都进行A到D四个步骤。因此,我们发现在这个过程中Access Token会经常的被传输,越是经常被网络传输的信息就越容易泄漏,因此Access Token的有效时间就要设置的短一些。但是如果因为Access Token的有效期短,导致了频繁向用户请求授权,这是一件用户体验很差的事情,为了解决这个问题,OAuth2引入了Refresh Token。

当Client得到用户授权之后,向授权服务器获取授权的时候,授权服务器不止会给Client一个Access Token还会给一个Refresh Token用以换取新的Access Token。当Client请求资源服务器之后,发现原本合法的Access Token失效之后(步骤E到F),会用Refresh Token向授权服务器再请求一个新的Access Token,授权服务器会将新的Access Token和新的Refresh Token发送给Client(步骤G到H)。由于有了Refresh Token,Client在向授权服务器请求Access Token的时候就可以不需要再次向用户请求授权了。同样的,因为Refresh Token很少用于传输,所以它是安全的。

原文地址:https://www.cnblogs.com/meibaorui/p/10981988.html

时间: 2024-07-31 18:22:47

身份认证系统(四)OAuth2运行流程的相关文章

基于DDD + SD.Framework实现的统一身份认证系统

项目地址 http://git.oschina.net/lishilei0523/ShSoft.UAC 项目说明 本项目开发的目的有三: 1.作为一个使用SD.Framework框架开发的项目样板 2.探索基于ASP.NET MVC的前端架构 3.做一套统一身份认证系统 注意事项: 如果编译失败,请安装PostSharp-4.1.15.exe(项目根目录下或附件中有) 请先修改服务端AppService项目配置文件中连接字符串,数据库会自动生成 先运行服务端,再运行客户端 如果服务端运行失败,请

java统一身份认证系统

每天记录学习,每天会有好心情.*^_^* 最近了解了基于java的统一身份认证系统项目,在这个平台记录一下这个基于java的统一身份认证系统项目,方便以后再次使用或学习的时候能够及时的翻阅.在完成基于java的统一身份认证系统项目的时候,考虑了很多框架.最终决定选用SSM(MYECLIPSE),该框架具有极强的移植性,多平台性,便于操作性等优点.此框架能在MYECLIPSE开发工具中完美的编写和运行,基于java的统一身份认证系统为一个 后台项目.本文主要针对媒体传播类网站中数据的安全级别采用动

身份认证系统(一)单WEB应用的身份认证

身份认证技术,也就是所谓的登录功能,是现代WEB系统最常见的功能之一.本系列文章就试图为大家详细的介绍身份认证技术. Basic认证模式 Basic认证模式是较早被广泛应用的一种HTTP标准提供的认证模式.最常见的形式之一就是在url中直接写上用户名密码向服务器提供身份: http://user:[email protected]/index.html 在Basic模式之中,每次向服务器请求受保护资源的时候都要在url中带上明文或仅被Base64编码过的用户名密码.而且在这种模式下,如果我们要实

身份认证系统 OAuth2的四种模式

OAuth2标准为了应对不同的场景,设计了四种不同的标准模式. 1.授权码模式 授权码模式是四种模式中最繁琐也是最安全的一种模式. client向资源服务器请求资源,被重定向到授权服务器(AuthorizationServer) 浏览器向资源拥有者索要授权,之后将用户授权发送给授权服务器 授权服务器将授权码(AuthorizationCode)转经浏览器发送给client client拿着授权码向授权服务器索要访问令牌 授权服务器返回Access     Token和Refresh Token给

身份认证系统(三)什么是OAuth2

本文准备用最简单的语言告诉大家什么是OAuth2 ,OAuth2是干什么的. 我们有一个资源服务器,资源服务器中有一系列的用户数据. 现在有一个应用想想要获取我们的用户数据.那么最简单的方法就是我们开发一个API.可是某天来了个恶意应用,或者是我们不想给它数据的应用,我们就会造成数据的泄漏.所以我们就需要对第三方的应用进行校验,比如最原始的方法是使用IP地址,如果是不认识的IP地址就不给他资源.可是这种方案有两个严重的缺点: 1.当客户应用换了IP地址之后,我们也要同时维护更换IP地址. 2.当

JBPM学习(四):运行流程实例

概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包含了全部执行阶段,当中最典型的属性就是跟踪当前节点的指针,例如以下图. Execution,运行:普通情况下,一个流程实例是一个运行树的根节点. 使用树状结构的原因在于, 这一概念仅仅有一条运行路径, 使用起来更简单.业务API不须要了解流程实例和运行之间功能的差别.因此,API里仅仅有一个运行类型来引用流程实例和运行. 如果汇款和存档能够同一时候运行.那么主流程实例就包括了

SSO单点登录统一身份认证系统

什么是单点登录 简单点说就是公司有A,B两个系统,我登录了A系统之后再跳转到B系统可以直接访问,而不需要再次登录B系统. 几种常见的单点登录实现方式 在讲解单点登录之前先讲解几个基本的概念: Cookie: Cookie是一段不超过4KB的小型文本数据,是保存在用户本地的,常见格式为: Expires属性:设置Cookie的生存期 Domain属性:指定了可以访问该 Cookie 的 Web 站点或域 比如图中的Domain:192.168.1.72这就表示只能只有1.72下的请求可以使用这个c

一种基于主板BIOS的身份认证方案及实现

一.BIOS简介 BIOS是只读存储器基本输入/输出系统,它是被固化到计算机中的一组程序,为计算机提供最低级的.最直接的硬件控制,在计算机系统中起着非常重要的作用.BIOS是硬件与软件程序之间的接口,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行.BIOS的功能包括自检及初始化.硬件中断处理.程序服务处理. 1. 自检及初始化 这个部分的功能是启动计算机,包括三个部分,第一个部分是用于计算机刚接通电源时对硬件部分的检测,也叫做加电自检(POST),功能是检查计算机是否良好.第二个部分是

Spring Security 之身份认证

Spring Security可以运行在不同的身份认证环境中,当我们推荐用户使用Spring Security进行身份认证但并不推荐集成到容器管理的身份认证中时,但当你集成到自己的身份认证系统时,它依然是支持的. 1. Spring Security中的身份认证是什么? 现在让我们考虑一下每个人都熟悉的标准身份认证场景: (1)用户打算使用用户名和密码登陆系统 (2)系统验证用户名和密码合法 (3)得到用户信息的上下文(角色等信息) (4)为用户建立一个安全上下文 (5)用户接下来可能执行一些权