1. 前言
现在很多项目都有第三方登录或者第三方授权的需求,而最成熟的方案就是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
进行体验。锁定下方公众号:码农小胖哥 后续会详细的来分析相关的机制。
往期推荐
[
Git 提交代码之后的几种后悔药
[
为什么大多数IOC容器使用ApplicationContext,而不用BeanFactory
[
JIRA、Confluence等产品明年2月停售本地化版本,将影响中国近90%的客户!
[
妙用 Intellij IDEA 创建临时文件,Git 跟踪不到的那种
[
国内首个比特币勒索病毒制作者落网,但过程有点好笑...
[
TIOBE公布11月榜单:Python势不可挡,超越Java !
﹀
﹀
﹀
深度内容
推荐加入
本文分享自微信公众号 - 程序猿DD(didispace)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。