通过微信扫码登录剖析 oauth2 认证授权技术
前言
相信很多小伙伴在学习 JAVA 的过程中或多或少接触或者开发过类似于 xxx 管理系统的这么一个项目。里面的需求很经典也很值得去深究一下,由于早期的互联网环境比较落后,基本上一个单体项目便可吃天下无敌手了,用户需要使用这个系统,提供用户名、密码登录(登录成功授予对应用户相应的权限)即可。后来随着用户数目的暴增,单个项目扛不住这么高的并发了,便想到了相似代码逻辑的几个服务丢到不同的服务器上去运行,这样就减轻了服务器的压力了,但是也会伴随的衍射出一些问题。怎么保证多个服务运行过程中的数据一致性、数据如何共享、分布式事务的一致性…?为了解决这些问题 Redis、TCC、Spring Security…这些技术横空出世!技术是学不完的,但是他们的本质都是服务于项目,而项目必然逃不开 CAP 理论。基于 CAP 理论又衍射出来了一些优秀的架构模式(典型的有 NACOS 中的 AP、CP架构),而我们开发者利用这些优秀的架构理念又来开发更高效好用的技术框架,到最后学来学去你会发现这压根就是一个闭环。好了废话就说到这了,接下来开始步入正题:oauth2授权认证技术
趣味解读oauth2
官网对 oauth2 的介绍晦涩且抽象,我拿我切身经历过的一个例子来说。在我找到工作之前物色了很久的房子,挑来挑去终于挑中了一套房子,于是和房东 1.签定了合约,过几天我提着行李箱准备入住的时候,发现房间还没装修完,于是乎我打电话问房东什么情况?房东说:别着急嘛,这样你先住房子旁边的酒店好不,不用出房费,因为这个酒店是我开的。嘻嘻(#.#)。于是乎我急匆匆的挂完电话,提着行李箱,来到酒店前台和小姐姐说,你老板让你给我免费开个房间(速度),小姐姐满脸嫌弃的看着我,内心 OS (空口无凭的还 2.想免费使用我们的房间?)。3.于是乎我随机拨通了房东的电话,并将电话递给小姐姐,让房东和他解释。这样我就 4.可以免费使用酒店的房间 了。注意我从想入住到入住实现的这个过程中经历了些啥,然后下文我会利用 oauth2 来模拟这些过程,帮助大家更好的去理解 oauth2 里面的设计精髓
oauth2精髓
通过趣味解读可以总结出一句话:oauth2能让第三方系统在不知道用户主系统的账号信息的情况下,和用户拥有同等的权限进行操控主系统。换言之就是,别墅虽然是你的、房产证也在你手上,但是如果你同意让我免费蹭别墅住,我也能像你一样住别墅的,注意哦,只是让你同意让我入住,并没有要求房子还要过户给我,房产证还是你的。
oauth2核心概念
结合趣味解读oauth2中的小例子得出
- 资源服务:房东要有一座酒店
- 认证服务:房东要通过某种方式去通知前台小姐姐,这个客人可以免费入住
- 绑定关系:我们去入住酒店的前提,是与房东签订好了合约,合约记录了 xxx 可以入住 xxx 号房,不然我们与房东都没有契约关系,再去叫房东办事,房东都不认识我们自然无法入住酒店了,除非我们出房费
- 用户在手机上点同意码云申请使用你的昵称头像…后,由于此时code已经重定向到码云指定页面的 url 上面了,码云的 pc 端页面获取到 code,将code作为参数,传给码云服务器,去申请token。然后前端拿到这个 token 就可以做操作了
- 到此整个流程结束
本文小结
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序传值的几种方式