从Client应用场景介绍IdentityServer4(三)
原文:从Client应用场景介绍IdentityServer4(三)
在学习其他应用场景前,需要了解几个客户端的授权模式。首先了解下本节使用的几个名词
Resource Owner:资源拥有者,文中称“user”;
Client为第三方客户端;
Authorization server为授权服务器;
redirection URI:简单理解为取数据的地址;
User Agent:用户代理,本文中就是指浏览器;
这里把访问资源服务器简单理解成取数据。
Resource Owner Password Credentials模式

下面以我自己的理解加上对话的形式来简要说明。
User:Client,这是我的redirection URI,user ID和Password,你去帮我拿些数据吧。
Client:好的,没问题!(转向Authorization server)Authorization server,这是user的user ID和Password,我要去拿user需要的数据。
Authorization server:给的user ID和Password正确,给你access token和refresh token,去拿数据吧。
authorization code模式

User:Client,这是我的redirection URI,你去帮我拿些数据吧,但是我不会提供账号密码。
Client:这样啊,那我们找Authorization server吧,让它来当中间人。
Authorization server(很负责任):User,你是要让Client帮你拿数据吗。
User:是啊,这是我的redirection URI。
Authorization server:Client,给你个授权码authorization code,你拿着authorization code和user给你redirection URI给我验证吧。
Client:好,这是authorization code和user给我redirection URI,我要去拿数据了。
Authorization server:可以,验证没问题了,给你个access token和refresh token,你去拿数据吧。
Implicit模式

User:Client,这是我的redirection URI,你去帮我拿些数据吧,但是我不会提供账号密码。
Client:这样啊,那我们还是找Authorization server吧,让它来当中间人。
Authorization server:User,你是要让Client帮你拿数据吗。
User:是啊,这是我的redirection URI。
Authorization server:(浏览器登场)浏览器,这是user的redirection URI和access token的碎片,你来帮他搞吧。
浏览器(很委屈):只给access token的碎片弄不了啊,我还是问redirection URI怎样才能把这些碎片拼完整吧。
redirection URI的老大(资源服务器):给你个网页,里面有方法把access token的碎片拼起来。
浏览器:Client,access token拼好了,你用access token去拿数据吧。
Implicit模式通过user的浏览器成功拿到了access token,相对于authorization code模式,省去了授权码部分。
而密码模式,需要user提供账号和密码进行验证。倘若user的账号密码可以让Client获取到,可以使用密码模式,但要确保Client不被黑了。
Hybrid模式:
Hybrid模式是结合了Implicit模式和authorization code模式。以下是我对Hybrid模式的理解,如有不对的地方,欢迎指正!
User通过身份认证后,ID token和类似授权码authorization code等信息被传输到浏览器,Client通过浏览器获取到authorization code,然后从Authorization server获取到access token和refresh token。
最后说下refresh token
获取到access token后,它是默认有效时间为3600秒/1小时,可以在new Client的AccessTokenLifetime进行设置。一般情况下,access token失效后,用户需要重新授权,Client才能拿到新的access token。但有了refresh token后,Client检测到access token失效后,可直接向Authorization server申请新的access token。当然,refresh token也是有有效期的。
AbsoluteRefreshTokenLifetime的默认有效期为2592000秒/30天。SlidingRefreshTokenLifetime的默认有效期为1296000秒/15天。
refresh token支持hybrid,authorization code,device flow 和 resource owner password flows等模式 。
本节图片转自阮一峰的网络日志:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
以上是个人对客户端的授权模式的理解,如有不对的地方,欢迎指正
从Client应用场景介绍IdentityServer4(三)的更多相关文章
- 从Client应用场景介绍IdentityServer4(五)
原文:从Client应用场景介绍IdentityServer4(五) 本节将在第四节基础上介绍如何实现IdentityServer4从数据库获取User进行验证,并对Claim进行权限设置. 一.新建 ...
- 从Client应用场景介绍IdentityServer4(四)
原文:从Client应用场景介绍IdentityServer4(四) 上节以对话形式,大概说了几种客户端授权模式的原理,这节重点介绍Hybrid模式在MVC下的使用.且为实现IdentityServe ...
- 从Client应用场景介绍IdentityServer4(一)
原文:从Client应用场景介绍IdentityServer4(一) 一.背景 IdentityServer4的介绍将不再叙述,百度下可以找到,且官网的快速入门例子也有翻译的版本.这里主要从Clien ...
- 从Client应用场景介绍IdentityServer4(二)
原文:从Client应用场景介绍IdentityServer4(二) 本节介绍Client的ClientCredentials客户端模式,先看下画的草图: 一.在Server上添加动态新增Client ...
- Memcache应用场景介绍
面临的问题 对于高并发高訪问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题.特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰 值已经达到500的时候,那你的程序执行离崩溃的边 ...
- Memcache应用场景介绍,说明
面临的问题 对于高并发高访问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题.特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰 值已经达到500的时候,那你的程序运行离崩溃的边 ...
- 消息中间件activemq的使用场景介绍(结合springboot的示例)
一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件. 目前在生产环境,使 ...
- Memcache应用场景介绍,说明[zz]
转于:http://www.cnblogs.com/literoad/archive/2012/12/23/2830178.html 面临的问题 对于高并发高访问的 Web应用程序来说,数据库存取瓶颈 ...
- Eclipse的debug按钮介绍(三)
本文链接:https://blog.csdn.net/u011781521/article/details/55000066 http://blog.csdn.net/u010075335/ar ...
随机推荐
- stm32的dma缓冲区长度,,存放数据数组会不会冲掉
- [RxJS] Connection operator: multicast and connect
We have seen how Subjects are useful for sharing an execution of an RxJS observable to multiple obse ...
- Oracle-18-select语句初步&SQL中用算术表达式&别名的使用&连接运算符%distinct&where子句
一.一般SELECT语句的格式例如以下: 1.查询指定表的全部列 select * from 表名 [where 条件] [group by 分组列名] [having 聚合函数] [order by ...
- swift项目第七天:构建访客界面以及监听按钮点击
一:访客界面效果如图 二:xib封装访客视图的view 1:业务逻辑分析:1:由于用户未登录时要显示访客视图,要先进行判断用户是否登录,未登录则显示访客视图,登录则显示正常的登陆界面,由于要在四个子控 ...
- POJ 1979 Red and Black (zoj 2165) DFS
传送门: poj:http://poj.org/problem?id=1979 zoj:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problem ...
- [Angular] Bind async requests in your Angular template with the async pipe and the "as" keyword
Angular allows us to conveniently use the async pipe to automatically register to RxJS observables a ...
- javascript的全局变量 分类: C1_HTML/JS/JQUERY 2014-08-07 11:03 562人阅读 评论(0) 收藏
javascipt是一门面向对象的编程语言.由于存在一些全局属性及全局函数,因此可以认为存在一个全局变量,这些全局属性及全局函数均是其属性或函数. 在js核心中,并没有定义一个具体的全局变量,因此,j ...
- 使用DatagramSocket与DatagramPacket传输数据 分类: B1_JAVA 2013-10-12 13:00 1936人阅读 评论(0) 收藏
参考传智播客毕向东JAVA视频. 注: DatagramSocket发送的每个包都需要指定地址,而Socket则是在首次创建时指定地址,以后所有数据的发送都通过此socket. A socket is ...
- <Linux> xm 命令
xm console <域ID> ctrl+ ] 退出虚拟机到宿主 xm reboot <域ID> xm pause <域I ...
- web报表工具FineReport经常使用函数的使用方法总结(文本函数)
文本函数 CHAR CHAR(number):依据指定数字返回相应的字符.CHAR函数可将计算机其它类型的数字代码转换为字符. Number:用于指定字符的数字,介于1Number:用于指定字符的数字 ...