IdentityServer4-客户端的受权模式原理分析(三)

       在学习其余应用场景前,须要了解几个客户端的受权模式。首先了解下本节使用的几个名词html

       Resource Owner:资源拥有者,文中称“user”;浏览器

       Client为第三方客户端;服务器

       Authorization server为受权服务器;网络

       redirection URI:简单理解为取数据的地址;学习

       User Agent:用户代理,本文中就是指浏览器;spa

       这里把访问资源服务器简单理解成取数据。代理


 

Resource Owner Password Credentials模式

 

下面以我本身的理解加上对话的形式来简要说明。日志

User:Client,这是个人redirection URI,user ID和Password,你去帮我拿些数据吧。code

Client:好的,没问题!(转向Authorization server)Authorization server,这是user的user ID和Password,我要去拿user须要的数据。server

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支持hybridauthorization codedevice flow 和 resource owner password flows等模式 。


 

本节图片转自阮一峰的网络日志:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

以上是我的对客户端的受权模式的理解,若有不对的地方,欢迎指正

相关文章
相关标签/搜索