1. 前言

Spring Security实战干货系列

现在很多项目都有第三方登录或者第三方授权的需求,而最成熟的方案就是OAuth2.0授权协议。Spring Security也整合了OAuth2.0,在目前最新的Spring Security 5中整合了OAuth2.0的客户端,我们可以很方便的使用Spring Security OAuth2来实现相关的需求。

接下来跟着胖哥的节奏搞一个第三方授权先直观的感受一下。假设我现在也不会OAuth2.0从零开始,产品给了一个使用码云做授权的需求,我们该怎么实现它?

2. 申请授权

这就像你想去某个公司上班,你要面试并提交很多资料证明你可以满足对方的需要,通过后公司同意你去上班,给你一个职位以及对应的权限、工号、工位。

同样的道理,我们要去码云申请一个授权功能,也就是在对方的开放平台上开个授信客户端。以后不管你是微信、支付宝还是QQ都是差不多的流程。申请成功后它们会给你下面这些字段概念。

因平台而异字段概念可能稍微有点出入,但是不会太大。

2.1 clientId

很长的一个字符串,这就是你的应用在这个的平台的“工号”,当你请求授权时要携带这个clientId作为你应用的标识。

2.2 clientSecret

客户端密钥,就像密码一样用以证明你的授权请求确实来自于你的应用。这个是敏感数据,要注意保密。

2.3 authorizationGrantType

授权的类型途径,这个当你向第三方开放平台申请时会明确告诉你可以使用的授权类型。你在请求授权时需要明确告诉第三方平台你的授权类型。

OAuth2.0提供了常用的四种方式以及其它不常用的两种方式。

2.4 tokenUri

这个是第三方开放平台提供给你获取access_token的接口,这个access_token是你访问第三方开放平台开放资源的凭据。

2.5 userInfoUri

这个是你用来获取被授权人在第三方开放平台的用户信息的接口,大多数是公开信息基本不涉及的敏感信息,以达到不同平台之间信息共享的目的。

2.6 redirectUri

回调地址,有的平台叫callback。这有什么用呢?就像你面试留的手机或者电子信箱,面完面试官让你回去等通知面试结果。这个redirectUri就是用来通知你授权的结果的,当然这个比面试官要特么靠谱,成不成都会告诉你结果。

当然这里面试的例子不是特别的合适,只是方便你快速理解。

2.7 scope

这个就是授权的条目,指的是你要表明你要这个授权干什么用,某个公司发了很多JD有Java开发、Golang开发、前端开发、测试、UI。你去面试肯定第一件事要告知面试官你面试哪个岗位一样。

当然关于OAuth2.0的scope可能更加丰富。

3. 体验OAuth2.0授权

学习接触一个新东西要不求甚解,先去直观感受它,了解它表面是如何运作的,然后再深入研究。

所以我直接先放出了 Spring Security OAuth2.0 实现码云第三方授权的DEMO,有兴趣的同学先直观感受下这个场景,后续我会由浅入深来共同学习这门技术。

3.1 使用方法

关注公众号:码农小胖哥 回复 authgitee 获取Spring Security OAuth2.0 DEMO后,直接运行对应的分支项目。然后浏览器访问接口。http://localhost:8082/oauth2/authorization/gitee进行体验。锁定:码农小胖哥 后续会详细的来分析相关的机制。

关注公众号:Felordcn 获取更多资讯

个人博客:https://felord.cn

Spring Security 实战干货:OAuth2第三方授权初体验的更多相关文章

  1. Spring Security 实战干货:客户端OAuth2授权请求的入口

    1. 前言 在Spring Security 实战干货:OAuth2第三方授权初体验一文中我先对OAuth2.0涉及的一些常用概念进行介绍,然后直接通过一个DEMO来让大家切身感受了OAuth2.0第 ...

  2. Spring Security 实战干货:OAuth2授权请求是如何构建并执行的

    在Spring Security 实战干货:客户端OAuth2授权请求的入口中我们找到了拦截OAuth2授权请求入口/oauth2/authorization的过滤器OAuth2Authorizati ...

  3. Spring Security 实战干货: 简单的认识 OAuth2.0 协议

    1.前言 欢迎阅读 Spring Security 实战干货 系列文章 .OAuth2.0 是近几年比较流行的授权机制,对于普通用户来说可能每天你都在用它,我们经常使用的第三方登录大都基于 OAuth ...

  4. Spring Security 实战干货:OAuth2登录获取Token的核心逻辑

    1. 前言 在上一篇Spring Security 实战干货:OAuth2授权回调的核心认证流程中,我们讲了当第三方同意授权后会调用redirectUri发送回执给我们的服务器.我们的服务器拿到一个中 ...

  5. Spring Security 实战干货:图解Spring Security中的Servlet过滤器体系

    1. 前言 我在Spring Security 实战干货:内置 Filter 全解析对Spring Security的内置过滤器进行了罗列,但是Spring Security真正的过滤器体系才是我们了 ...

  6. Spring Security 实战干货:使用 JWT 认证访问接口

    (转载)原文链接:https://my.oschina.net/10000000000/blog/3127268 1. 前言 欢迎阅读Spring Security 实战干货系列.之前我讲解了如何编写 ...

  7. Spring Security 实战干货:如何实现不同的接口不同的安全策略

    1. 前言 欢迎阅读 Spring Security 实战干货 系列文章 .最近有开发小伙伴提了一个有趣的问题.他正在做一个项目,涉及两种风格,一种是给小程序出接口,安全上使用无状态的JWT Toke ...

  8. Spring Security 实战干货:理解AuthenticationManager

    1. 前言 我们上一篇介绍了UsernamePasswordAuthenticationFilter的工作流程,留下了一个小小的伏笔,作为一个Servlet Filter应该存在一个doFilter实 ...

  9. Spring Security 实战干货:图解用户是如何登录的

    1. 前言 欢迎阅读Spring Security 实战干货系列文章,在集成Spring Security安全框架的时候我们最先处理的可能就是根据我们项目的实际需要来定制注册登录了,尤其是Http登录 ...

随机推荐

  1. VS Code 搭建编写Shell环境(WSL)

    安装过程 Win10开启WSL,方法略 安装VSCode,方法略 安装语法提示插件:shellman 安装格式化插件:shell-format(右键 -> 格式化文档(Ctrl + Alt + ...

  2. 下载 node.js 步骤 bower npm 报错解决

    1,下载node.js  ,安装之后就可以 了 2,解决"npm不是内部或外部命令"   ,打开安装的node.js  的文件夹 将这个地址,放在环境变量里面 <1,属性环境 ...

  3. VBScript 教程

    VBScript 教程 VB 不区分大小写 变量 普通变量 关键词声明 Dim.Public.Private 赋值动态创建 name = "hello" Option Explic ...

  4. 你想了解的《javaScript语言精粹》(三)

    # javaScript语言精粹  # 第三章 对象 - javaScript 数据类型     1. 基础数据类型         Number String Boolean Undefined N ...

  5. C# 范型约束 new() 你必须要知道的事

    C# 范型约束 new() 你必须要知道的事 注意:本文不会讲范型如何使用,关于范型的概念和范型约束的使用请移步谷歌. 本文要讲的是关于范型约束无参构造函数 new 的一些底层细节和注意事项.写这篇文 ...

  6. C语言中数组与指针的异同之处!你不知道的编程奥秘~

    C语言的数组和指针一直是两个容易混淆的东西,当初在学习的时候,也许为了通过考试会对指针和数组的一些考点进行突击,但是很多极其细节的东西也许并不是那么清楚.本篇侧重点在于分析数组与指针的关系,什么时候数 ...

  7. 【原创】xenomai内核解析--实时内存管理--xnheap

    目录 一. xenomai内存池管理 1.xnheap 2. xnpagemap 3. xnbucket 4. xnheap初始化 5. 内存块分配 5.1 小内存分配流程(<= 2*PAGE_ ...

  8. switch host 切换本地host

    百度网盘提取地址 提取码: 753r 下载后放到软件目录即可使用

  9. 《Kafka笔记》4、Kafka架构,与其他组件集成

    目录 1 kafka架构进阶 1.1 Kafka底层数据的同步机制(面试常问) 1.1.1 高水位截断的同步方式可能带来数据丢失(Kafka 0.11版本前的问题) 1.1.2 解决高水位截断数据丢失 ...

  10. [开源] .Net ORM FreeSql 1.10.0 稳步向行

    写在开头 FreeSql 是 .NET 开源生态下的 ORM 轮子,转眼快两年了,说真的开源不容易(只有经历过才明白).今天带点干货和湿货给大家,先说下湿货. 认识我的人,知道 CSRedisCore ...