zoukankan      html  css  js  c++  java
  • 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支持hybridauthorization codedevice flow 和 resource owner password flows等模式 。


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

    以上是个人对客户端的授权模式的理解,如有不对的地方,欢迎指正

  • 相关阅读:
    技术必备:推荐一款接口自动化测试数据校验神器
    提高GUI自动化测试稳定性解决方案
    新特性,推荐一款超强接口管理神器 Apifox
    测试开发:从0到1学习如何测试API网关
    接口自动化测试,一键快速校验接口返回值全部字段
    测试工程师必学:测试人员如何深入了解项目
    Django+Vue+Docker搭建接口测试平台实战
    如何开展线上全链路压测思路分享
    刚转行1年测试新手:学习Python编程经验实战分享
    测开新手:从0到1,自动化测试接入Jenkins学习
  • 原文地址:https://www.cnblogs.com/FireworksEasyCool/p/10142321.html
Copyright © 2011-2022 走看看