OAuth2.0四种模式说明|学习笔记

简介: 快速学习 OAuth2.0四种模式说明

开发者学堂课程【Spring Security知识精讲与实战演示(四)OAuth2.0四种模式说明】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/733/detail/13077


OAuth2.0四种模式说明

 

内容介绍

一、 授权码模式

二、 简化模式

三、 密码模式

四、 客户端模式

 

四种授权方式。为了能说清楚这四种授权方式分别都是怎样的流程?如下图,对着这张图来进行说明。

image.png

一、授权码模式

用户想让a系统直接打a系统印在b系统上的照片,来访问a系统,准备去打印b系统照片时,a系统会把用户指向另外一个界面,为用户是否允许a系统去操作b系统,需要注意是a系统问用户是否自己可以操作b系统?而不是用户去操作b系统,因为用户本就可以操作,是问要不要给a系统权限,让a系统去操作技能。用户可以有两个选择,第一同意,第二拒绝。一般都说同意,拒绝就自己下照片自己做,同意统一操作b系统,就意味着a系统想拿b系统的资源,前提条件是用户自身在b系统上有操作权限,如果用户都没有在b系统上的操作权限,想让a系统操作是不可能的,这时一般情况下就会提示用户去登录b系统,例如在实际生活中用到的第三方登录。

打开一个网站,网站a系统,用微信登录,微信是b系统,用微信登录的时候只要提示,要不要用微信登录?可以,微信已经是登录的状态,就可以直接给授权。但要注意,如果微信没有登录,必须要先登录微信才可以进行后续。

如果说a系统被允许操作b系统,那么只要给予权限,b系统会提示要登录,接下来登录b系统后,b系统就会给a系统来一个回调,给一个授权码。这就是这一个模式的一个精粹。授权码给a系统后证明就可以操作b系统,在a系统是客户端的一个交互。接下来a系统拿到授权码,在a系统的服务器端要向b系统发一次请求。b系统给a系统生成通行的令牌,授权码跟token不是一回事。授权码只说明b系统同意让a系统进行操作,给一个授权码,这个a系统不能真正去操作,要真正想去操作b系统,去操作b系统时,必须带上一个通行的令牌token,而这个令牌是需要通过授权码去生成。要拿着授权码在这里得到通行的令牌。得到令牌后,再去用b系统时,拿着令牌过去就可以,这就是授权码模式。

具体步骤。

第一步:【A服务客户端】将用户自动导航到【B服务认证服务】。这一步用户需要提供一个回调地址,以备【B服务认证服务】返回授权码使用。如果不给回调地址,就得不到授权码。这就是回调地址。

第二步:用户点击授权按钮表示让【A服务客户端】使用【B服务资源服务】,这一步需要用户登录B服务,也就是说用户要事先具有B服务的使用权限。

第三步:【B服务认证服务】生成授权码,授权码将通过第一步提供的回调地址,返回给【A服务客户端】。注意这个授权码并非通行【B服务资源服务】的通行凭证。

第四步:【A服务认证服务】携带上一步得到的授权码向【B服务认证服务】发送请求,获取通行凭证token.

第五步:【B服务认证服务】给【A服务认证服务】返回令牌token和更新令牌refresh token.·使用场景,第五步:去访问时,b系统服务可以直接让a系统服务去访问,这时b系统会返回一个token,一个更新token。访问的令牌,当然令牌时间很短,有可能过期,过期之后,可以再访问刷新token,不需要再拿授权码,当然授权码只能用一次。一次之后就再也不能使用,但后面再想拿到图片,只能通过发新图改,这就是授权码模式。

 

二、简化模式

简化模式跟授权码模式比非常简单,它简化了授权码模式。在这上面一直说有个叫授权码的东西,授权码是在客户端生成的,简而言之,上图就通过客户端给授权码,授权码是暴露在页面上。所以不安全,因为授权码并不能直接访问b系统,授权码要经过服务器再生成token才能访问,所以暴露无所谓,但简化模式不安全,可以不要授权。简化模式不要授权码,这里根本没有授权码,简而言之,可以直接在客户端向b系统的服务器发请求得到所有通行的token,可以直接去访问,所以不推荐使用简化模式,因为简化模式会将保卫b系统的通行令牌暴露在浏览器,这种方式是不安全的。但是也有公司会这样用。推荐大家使用授权码模式。

 

三、密码模式

密码模式,以图为例,想让a系统访问b系统,把个人的用户名和密码告诉它,a系统的用户名和密码,是b系统的用户名和密码。换言之,用户有两个系统,一个是a系统,一个是b系统,一个第三方网站,一个是VIP,要把账号和密码告诉网站,这更不安全,所以这时需要网站a系统进度非常高才能使用,否则把另外一个软件的账号和密码都告诉它,这可能对个人隐私不是很好的事情,如果b系统是一个无关要紧的系统,无所谓,这是一种方式。

 

四、 客户端模式

客户端模式不属于OAuth2.0的范畴,a系统,b系统,都是用户可以访问的系统,用户都可以访问他俩,用户有授权说a系统以后可以直接访问b系统,因为这是用户自己来,也可以访问,但是客户端模式就是用户只能访问a系统,根本就不知道b系统,完全不知道b系统的存在,而a系统要用b系统,那a系统直接去找b系统,换言之,这时其实是两个不相关系统之间的一个交互,跟用户没有关系,用户访问a系统找资源,但是去哪个地方找资源并不知道,就是b系统的资源是a系统要用,而不是用户要用。所以说第四种方式一般情况下不再认为它是OAuth2.0的一个范畴.

以上说明这四种模式分别是什么,这里有点抽象,这是正常的,因为流程确实很复杂,需要写完代码后再来看这四个模式,可能会更清晰,这四种模式可以暂时先做一个了解。

相关文章
|
6月前
|
存储 安全 Java
Spring Security 6.x OAuth2登录认证源码分析
上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。
265 2
Spring Security 6.x OAuth2登录认证源码分析
|
存储 安全 Java
Spring Security Oauth2 之 密码模式请求/oauth/token 解析
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger 种一棵树最好的时间是十年前,其次是现在
1555 0
|
存储 安全 前端开发
几行代码搞定 Spring Cloud OAuth2 授权码模式3个页面定制
几行代码搞定 Spring Cloud OAuth2 授权码模式3个页面定制
|
移动开发 小程序 安全
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战(二)
|
Java Spring
五分钟带你玩转oauth2(二十)spring security+oauth2通过EnableOAuth2Sso实现单点登录
五分钟带你玩转oauth2(二十)spring security+oauth2通过EnableOAuth2Sso实现单点登录
255 0
五分钟带你玩转oauth2(二十)spring security+oauth2通过EnableOAuth2Sso实现单点登录
Spring-security-oauth2 源码分析 登陆流程 /oauth/token (一)
Spring-security-oauth2 源码分析 登陆流程 /oauth/token (一)
Spring-security-oauth2 源码分析 登陆流程 /oauth/token (一)
|
存储 安全 Java
OAuth2在项目中使用完成的功能说明|学习笔记
快速学习OAuth2在项目中使用完成的功能说明
OAuth2在项目中使用完成的功能说明|学习笔记
|
存储 安全 Java
案例之oauth2认证所需资源说明|学习笔记
快速学习案例之oauth2认证所需资源说明
案例之oauth2认证所需资源说明|学习笔记
|
存储 安全 Java
OAuth2.0介绍|学习笔记
快速学习 OAuth2.0介绍
OAuth2.0介绍|学习笔记
|
存储 数据库 数据安全/隐私保护
OAuth2介绍 | 学习笔记
快速学习 OAuth2介绍
OAuth2介绍 | 学习笔记