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
以上是个人对客户端的授权模式的理解,如有不对的地方,欢迎指正
IdentityServer4-客户端的授权模式原理分析(三)的更多相关文章
- ASP.NET Core3.1使用IdentityServer4中间件系列随笔(三):创建使用[ClientCredentials客户端凭证]授权模式的客户端
配套源码:https://gitee.com/jardeng/IdentitySolution 上一篇<ASP.NET Core3.1使用IdentityServer4中间件系列随笔(二):创建 ...
- Ribbon使用及其客户端负载均衡实现原理分析
1.ribbon负载均衡测试 (1)consumer工程添加依赖 <dependency> <groupId>org.springframework.cloud</gro ...
- [转载]MVVM模式原理分析及实践
没有找到很好的MVVM模式介绍文章,简单找了一篇,分享一下.MVVM实现了UI\UE设计师(Expression Blend 4设计界面)和软件工程师的合理分工,在SilverLight.WPF.Wi ...
- Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式
一.前言 上一篇我分享了一篇关于 Asp.Net Core 中IdentityServer4 授权中心之应用实战 的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不够完 ...
- 认证授权:IdentityServer4 - 各种授权模式应用
前言: 前面介绍了IdentityServer4 的简单应用,本篇将继续讲解IdentityServer4 的各种授权模式使用示例 授权模式: 环境准备 a)调整项目结构如下: b)调整cz.Id ...
- IdentityServer4(客户端授权模式)
1.新建三个项目 IdentityServer:端口5000 IdentityAPI:端口5001 IdentityClient: 2.在IdentityServer项目中添加IdentityServ ...
- IdentityServer4 (1) 客户端授权模式(Client Credentials)
写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...
- ASP.NET Core3.1使用IdentityServer4中间件系列随笔(五):创建使用[Code-授权码]授权模式的客户端
配套源码:https://gitee.com/jardeng/IdentitySolution 本篇将创建使用[Code-授权码]授权模式的客户端,来对受保护的API资源进行访问. 1.接上一篇项目, ...
- IdentityServer4入门三:授权模式
在入门一.入门二我们实现了一个完整的API保护的过程.需要保护的API只需在其Controler上应用[Authorize]特性,来显式指定受保护的资源.而我们实现的这个例子,所应用的模式叫“Clie ...
随机推荐
- Android UI组件之自定义控件实现IP地址控件
http://www.cnblogs.com/razerlack/p/4273282.html
- 关于python中的module
python中的module(模块),关于这个概念以及使用时主要有以下几点需要注意: (1)import xx时,会首先将这个xx module中的代码执行一遍(且仅执行一遍): 例如: (2)模块包 ...
- memory_target
ALTER SYSTEM SET MEMORY_TARGET = 33024M; ALTER SYSTEM SET MEMROY_MAX_TARGET= 33024M SCOPE=SPFILE; sh ...
- centos6.5报错:checking filesystems failed问题处理
centos系统重启报错:checking filesystems failed checking filesystems /dev/mapper/vg_0-root: 搜了下可能是文件系统损坏 根据 ...
- 使用linux计划任务自动拉起停止的通达OA服务apache和mysql服务
概述: 数据库或web服务器瞬时并发过大时,可能面临宕机的危险,用类似开门狗的程序自动监控程序是否正常运行,在服务停止时自动启动服务,可临时解决该问题 监控apache服务的脚本: 每两分钟执行脚本检 ...
- FreeSWITCH与PSTN对接
FreeSWITCH与PSTN电话系统对接设定 一.环境介绍 我们目前使用模拟的话机连接到电信运营商,购买他们配套的电话总机,勉强实现了公司的基本通话.但是客户电话总机系统以及升级添加新的应用不但费用 ...
- SIP 认证
理解SIP的认证 1. 认证和加密 认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁.而相关的概念是MD5,用于认证安全.注意MD5仅仅是个hash函数而已,并不是 ...
- fastjson序列化排序问题
fastjson序列化,默认是用字母排序, 那么怎么来实现按照自己定义的顺序输出,想要的json串呢? 直接上代码: import com.alibaba.fastjson.annotation.JS ...
- SpringBoot入门小案例
1.创建一个简单的maven project项目 2.下面来看一下项目结构: 3.pom.xml 配置jar包 <parent> <groupId>org.springfram ...
- Android之 看“马达”如何贯通Android系统 (从硬件设计 --> 驱动 --> HAL --> JNI --> Framework --> Application)
在Android 2.3(Gingerbread) 系统的时候,我写过一篇关于“Android 震动马达系统“的文章,当时的Linux内核还是2.6版本的.写那篇文章的目的,是想彻底的了解从硬件到驱动 ...