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. 002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介

    002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介 学习Java的基础语法 Java是一门编程语言,学习的逻辑其实和现实世界的语言是一样的,需要了 ...

  2. 【随笔】Apache降权和禁用PHP危险函数

    测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...

  3. 【题解】[JSOI2007]字符加密

    Link \(\text{Solution:}\) 后缀数组第一题祭-- 观察一下,这个是让求一个环形的原字符串的后缀,我们可以考虑一下断环为链. 对于\(aba\)我们扩展成\(abaaba,\)则 ...

  4. id+is+深浅co'p'y

    day06 一.id.is 关键字:id #唯一的,如果id相同,说明2个变量指向同一个地址,就是变量一==变量二 注意:id相同值一定相同,值相同但是id不一定相同(不同代码块的值相同,他们就像太阳 ...

  5. 多测师讲解jmeter _接口请求_(003)高级讲师肖sir

    1.简单接口的请求 2. 3. 正则查看: 正则提取:在后置处理器中正则请求 设置:正则表达式 JSESSIONID提取器: Debug  sampler 总结:

  6. 快速解读linq语法

    在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...

  7. python 不定长参数

    1 #不定长参数 * 元祖 ** 字典 2 def item(a,b,*c,**d): 3 print(a) 4 print(b) 5 print(c) 6 print(d) 7 8 item(11, ...

  8. C语言和单片机C语言为什么会有差异?虽不同但理同!

    许多小伙伴在学完C语言后想入门单片机,但学着学着发现明明都是C语言,为什么单片机C语言和我当初学的C语言有差异呢? 今天小编就来梳理我们平时所学的C语言与单片机C语言的有什么样的不同. 单片机c语言比 ...

  9. C语言必踩神坑,世上本没有坑,摔的人多了,也就有了坑!

    这是一个伤心的故事,有多少小伙伴在写C语言代码时遇到过的情景! 提问:C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关: 可能但不保证初始化为0: 未确定. 总之,全部都是些一本正 ...

  10. Storm入门教程汇总

    http://www.aboutyun.com/thread-8059-1-1.html