前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >6.Spring Security OAuth2 授权模式

6.Spring Security OAuth2 授权模式

作者头像
用户1212940
发布于 2020-02-14 09:33:32
发布于 2020-02-14 09:33:32
1.1K00
代码可运行
举报
文章被收录于专栏:LambdaLambda
运行总次数:0
代码可运行

客户端授权模式

概述

客户端必须得到用户的授权(authorization grant),才能获取令牌(access_token)。OAuth2.0定义了四种授权方式:

  • implicit:简化模式,不推荐使用
  • authorization code:授权码模式
  • resource owner password credentials: 密码模式
  • client credentials:客户端模式

简化模式

简化模式适用于静态页面应用。所谓纯静态页面应用,也就是应用没有在服务器上执行代码的权限(通常是把代码托管在别人的服务器上),只要前端 JS 代码的控制权。

这种场景下,应用是没有持久化存储的能力的。因此,按照 OAuth2.0的规定,这种应用时拿不到 Refresh Token 。其整个授权流程如下:

该模式下, access_token 容易泄露且不可刷新

授权码模式

授权码模式适用于有自己的服务器的应用,它是一个一次性的临时凭证,用来换取 access_token 和 refresh_token。 认证服务器提供一个类似这样的接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.pyy.com/exchange?code=&client_id=&client_secret=

需要传入 code 、 client_id 以及 client_secret。 验证通过后,返回 access_token 和 refresh_token。一旦换取成功, code 立即作废,不能再使用第二次。流程图如下:

这个 code 的作用就是为了保护 token 的安全性。上面说到,简单模式下,token 是不安全的。这是因为在第4步中,直接把 token 返回给应用。而这一步容易被拦截、窃听。引入了 code 之后,即使攻击者能够窃取到 code,但是由于无法获取应用保存在服务器的 client_secret, 因此也无法通过 code 换取 token。而第 5 步,为什么不容易被拦截、窃听呢?这是因为,首先,这是一个服务器到服务器的访问,黑客很难捕捉到;其次,这个请求通常要求是 https 的实现。即使能窃听到数据包也无法解析出内容。

有个这个code ,token的安全性大大提高。因此 OAuth2.0鼓励使用这种方式进行授权,而简单模式则是在不得已情况下才会使用。

密码模式

密码模式中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向 “服务提供商” 索要授权。在这种模式中,用户必须把自己的密码给客户端,但是客户端不能存储密码。这通常在用户对客户端高度信任的情况下。

一个典型的例子是同一个企业内部的不同产品要使用本企业的 OAuth2.0 体系。在有些情况下,产品希望能够定制化授权页面。由于是同个企业,不需要向用户展示 “xxx将获取以下权限”等字样并询问用户的授权意见,而只需要进行用户的身份认证即可。这个时候,有具体的产品团队开发定制化的授权页面,接受用户输入账号密码,并直接传递给鉴权服务器进行授权即可。

有一点需要特别主要的是,在第 2 步中,认证服务器需要对客户端的身份进行校验,确保是受信任的客户端。

客户端模式

如果信任关系再进一步,或者调用者用户的一个后端的模块,没有用户界面的时候,可以使用客户端模式。鉴权服务器直接对客户端进行身份验证,验证通过后,返回token。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Security oAuth2
oAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。Spring Security 实现了 oAuth 协议。
数媒派
2022/12/01
8390
【全栈修炼】396- OAuth2 修炼宝典
严格来说,OAuth2 不是一个标准协议,而是一个安全的授权框架。其详细描述系统中不同角色,用户,服务前端应用(如 API )以及客户端(如网站或APP)之间如何实现相互认证。
pingan8787
2019/11/05
8610
【全栈修炼】OAuth2 修炼宝典
> 开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 —— 维基百科
pingan8787
2019/10/30
8800
一口气说出 OAuth2.0 的四种授权方式
上周我的自研开源项目开始破土动工了,[《开源项目迈出第一步,10 选 1?页面模板成了第一个绊脚石
程序员小富
2020/07/07
9260
一口气说出 OAuth2.0 的四种授权方式
Spring Security---Oauth2详解
在说明OAuth2需求及使用场景之前,需要先介绍一下OAuth2授权流程中的各种角色:
大忽悠爱学习
2021/12/07
4.8K0
Spring Security---Oauth2详解
大话Oauth2.0(二)、标准流程下的Oauth2组件及通信
Oauth2.0协议的核心内容是,第三方软件如何获取访问令牌,以及如何利用这个访问令牌代表资源拥有者访问受保护的资源。在这篇文章中我们从Oauth2的组件和组件间的通讯讲起。
王新栋
2019/06/24
1.7K0
Spring Security OAuth2.0实现
OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。
兜兜转转
2023/03/29
3K0
Spring Security OAuth2.0实现
OAuth 2.0 授权认证详解
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/06/20
2K0
OAuth 2.0 授权认证详解
4.Spring Security oAuth2-令牌的访问与刷新
Access Token 是客户端访问资源服务器的令牌。拥有这个令牌代表着得到用户的授权。然而,这个授权应该是 临时 的。这是因为,Access Token 在使用的过程中 可能会泄漏。给 Access Token 限定一个 较短的有效期 可以降低因 Access Token 泄漏带来的风险。
用户1212940
2020/02/14
2.3K0
oauth2.0的学习与使用
栗子一: 小新现在想要使用一个“在线打印服务”来打印一些照片,同时小新的照片都存储在了“云网盘”上,按照传统的方式小新要怎么做呢?
向着百万年薪努力的小赵
2022/12/02
9490
理解OAuth2.0认证与客户端授权码模式详解
OAuth 协议为用户资源的授权提供了一个安全又简易的标准。与以往的授权方式不同之处是 OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth是安全的。OAuth 是 Open Authorization 的简写
BUG弄潮儿
2021/04/12
6.2K0
Spring Security 系列(2) —— Spring Security OAuth2
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
求和小熊猫
2022/06/30
6.4K0
Spring security oauth2的认证流程
AuthorizationServerConfigurerAdapterm默认方法配置
用户1499526
2019/08/20
3.1K0
Spring Security 在 Spring Boot 中使用 OAuth2【分布式】
  OAuth(开放授权,Open Authorization)是一个开放标准,为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 2.0 是 OAuth 协议的延续版本,但不向后兼容 OAuth 1.0 即完全废止了 OAuth 1.0。很多大公司如 Google,Yahoo,Microsoft 等都提供了 OAuth 认证服务,这些都足以说明 OAuth 标准逐渐成为开放资源授权的标准。Oauth 协议目前发展到 2.0 版本,1.0 版本过于复杂,2.0 版本已得到广泛应用。Spring-Security-OAuth2 是对 OAuth2 的一种实现,并且跟 Spring Security 相辅相成,与 Spring Cloud 体系的集成也非常便利,最终使用它实现分布式认证授权解决方案。
Demo_Null
2020/10/30
7.2K0
Spring Security 在 Spring Boot 中使用 OAuth2【分布式】
SpringBoot学习笔记(十五:OAuth2 )
开放授权(Open Authorization,OAuth)是一种资源提供商用于授权第三方应用代表资源所有者获取有限访问权限的授权机制。由于在整个授权过程中,第三方应用都无须触及用户的密码就可以取得部分资源的使用权限,所以OAuth是安全开放的。
三分恶
2020/07/17
1.1K0
SpringBoot学习笔记(十五:OAuth2 )
OAuth2.0 认证
密码模式(Resource owner password credentials)流程
谢公子
2022/01/20
1.6K0
OAuth2.0 认证
OAuth 2.0 的探险之旅
OAuth 2.0 全称是 Open Authorization 2.0, 是用于授权(authorization)的行业标准协议。OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序、桌面应用程序、移动设备应用等提供了特定的授权流程。它在2012年取代了 OAuth 1.0, 并且 OAuth 2.0 协议不向后兼容 OAuth 1.0。
全球技术精选
2021/11/12
1.8K0
OAuth 2.0 的探险之旅
OAuth2.0认证解析
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。
FB客服
2020/11/16
4.9K0
OAuth2.0认证解析
OAuth2混合模式
OAuth2混合模式(Hybrid Flow)是一种OAuth2授权模式,它结合了授权码模式和隐式授权模式的优点,可以在保证安全性的同时,提供更好的用户体验。
堕落飞鸟
2023/04/14
8870
3. spring security & oauth2
解释看代码字面意思就懂了,没什么特殊的,还可以修改比如登录表单里的用户名和密码的名字,还可以添加各种登录成功之后的handler等等,写法都一样。
MasterVin
2018/08/30
1.1K0
3. spring security & oauth2
相关推荐
Spring Security oAuth2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验