网站建站服务公司电话,在阿里云里网站建设的步骤过程,平台网站建设所需资质,旅行网站系统对于刚开始接触身份认证的朋友对于单点登录#xff0c;OAuth2.0#xff0c;JWT 等等会有诸多疑惑#xff0c;甚至还会问既然有了 JWT 还拿 单点登录做什么#xff1f;还拿 OAuth2.0 做什么#xff1f;
不知做过身份认证的 xdm 看到这里是不是感觉这句话有点迷#xff1f…对于刚开始接触身份认证的朋友对于单点登录OAuth2.0JWT 等等会有诸多疑惑甚至还会问既然有了 JWT 还拿 单点登录做什么还拿 OAuth2.0 做什么
不知做过身份认证的 xdm 看到这里是不是感觉这句话有点迷 他们有啥必然的关系吗并没有
这篇文章旨在阐述 单点登录 OAuth2.0 以及 JWT 具体是个啥其他的关联内容会简单提及希望能够对你有帮助
✔单点登录是什么
单点登录 英文翻译为 Single Sign On简称就是SSO
他是一种思想期望的是在多系统的应用中只要在其中一个系统上进行登录那么就可以直接访问其他任何一个互信的系统
简单来说就是一次登录多系统多次使用
✔为什么要使用单点登录
自然是为了让用户能够更简单更高效更便捷的访问多个关联系统
其实通过这个简单有趣的思想我们就可以知道单点登录的由来自然还是用户的需求驱动的
过去我们的系统比较少每个系统都会去实现和维护一个登录认证模块基本上是账号密码登录手机短信验证码登录等等
可发展到现在很多业务是关联多个子系统的如果我们访问每一个子系统都要完成一次认证例如每个系统都要我们输入账号密码 那么我们可能会疯掉这种设计太反人类
不过还是有一点好就是我们可以把我们的密码记得更加牢固
因此如果你是用户你也期望只用登录认证一次我就可以访问其关联的所有系统这样更加人性化
✔通用的单点登录实现方式有哪些
现在用的比较多的单点登录实现方式有如下四种从实现方式从简单到复杂排序为
JWT Json web token 基于 Token 的认证授权机制 CAS Central Authentication Service中心授权服务 OAuth2.0 (Open Authorization 2.0) 开放授权协议 SAML Security Assertion Markup Language 安全断言标记语言
每一种协议都有自己的一个认证流程思想都差不多本篇文章重点聊聊 JWT 和 OAuth2.0
✔什么叫做认证什么叫做授权
首先对于上述内容一会儿认证一会儿授权到底有啥不一样
对于看到 Authorization 这个单词你认为是授权还是认证
看到 Authentication 这个单词又是如何理解的呢
认证 Authentication 关注的是需要你证明你是谁是一个证明自己身份的过程
例如咱们去参加演唱会你如何证明你可以进去听
是不是可以用你手上的票来证明你的身份是一个给了钱买了票能听歌的人
这个时候你过了演唱会的大门进入到场子内你会发现你这样的身份只是被授权 Authorization 可以进入某些区域另外的一些区域你是没有办法进入的 所以我们此刻就知道了
认证是去证明你的身份授权是判断你可以访问哪一些资源 认证发生在授权之前授权发生在认证之后
✔JWT 是什么
JWT Json web token 是基于 Token 的认证授权机制
见名知意jwt 也是一种 token 只不过这种 token 有自己的一些约束和规定
一个 JWT 由 头header载荷payload签名signature 组成具体细节可以查看这篇文章内容JWT身份认证(附带源码讲解)
此处聊一下关于使用 JWT 的方式来实现单点登录
简单流程如下 对于此处我们一般会去使用 IDaaS 作为认证中心 来进行认证在 IDaaS 中是可以创建应用的此处的应用即是我们的关联系统
IDaaS 认证完毕后会将用户信息具体的签名算法生成一个 JWT 给到具体的应用关联系统 关联系统用秘钥解析 JWT 并拿到具体的用户信息之后再去完成自己平台内部的各种校验进而让该用户完成认证和授权 可以查看到更多的是需要处理 JWT 产生和解析的一个过程约定好协议字段就可以了这种方式最简单
✔OAUTH2.0 是什么
OAuth2.0 (Open Authorization 2.0) 开放授权协议
见名知意他是一个授权协议而不是一个认证协议
此处的 2.0 协议是不兼容之前的 1.0 协议的此处需要注意具体更加细节的内容可以查阅RFC 6749
先举一个例子说明为什么要用 OAuth
咱们登录掘金的时候我们不想在掘金上注册账号密码而且我们还想直接通过登录微信来达到登录掘金的目的
那么掘金就不得不和微信有交互就需要获取到微信的授权
用过这种方式登录的人就知道这种场景在掘金页面选择微信登录的时候会弹出掘金正在申请微信授权用户的昵称和头像需要我们同意 我们同意之后掘金获取到微信授权拿到昵称和头像我们就可以顺利的使用微信账号登录到掘金平台上了
此刻是否会有同学问直接让微信告诉掘金账号密码不就可以了吗这样岂不是更方便
方便是方便了但是这会埋下巨大的安全问题
对于各大平台来说密码是隐私怎么可以给多第三方平台呢 如果微信将账号密码给了掘金那么掘金就可以随时随地的登录我们用户的账号这是不安全的而且也是没有办法设置掘金可以使用账号密码的方式访问微信的资源范围和其有效期的 按照这种方式其他平台也可以这样来通过微信授权的方式来登录其他第三方平台若密码被泄漏了那么用户在微信上的数据就全部泄漏了安全问题很大哟
正是因为这样的方式行不通有智慧的大佬们便推出了 OAuth 授权协议
✔OAuth3.0 的基本流程
举个例子在掘金中使用微信认证的方式来登录掘金主要看大体的方向和流程 通过上述流程我们可以发现和解释关于OAuth2.0 涉及到的名词
其中我们可以看到微信在整个过程中所处的角色是
资源服务器 授权服务器
登录的这个微信用户叫做
资源拥有者
掘金向微信请求授权的过程中会带上 Redirect_Uri 和 State
Redirect_Uri 表示经过微信用户同意之后页面会被重定向到的地方并且还会给这个Redirect_Uri 带上用户的登录凭证 code 和 State 原值用于防篡改
掘金获取到授权许可之后通过登录凭证向微信拿到访问令牌 Access Token
掘金拿着 Access Token 即可访问微信的昵称和头像这个就属于
Scope 访问范围决定掘金可以对用户可以访问哪些资源
总结
至此相信你应该知道什么是单点登录什么是 JWT 什么是 OAuth2.0 协议了吧
单点登录是一种思想
JWT 是一种 Token 的形式
OAuth2.0 协议是一种授权协议
单点登录 可以用OAuth2.0 协议来进行实现实现 OAuth2.0 协议过程中使用到的 Token 就可以使用 JWT 的方式来生成 Token
感谢阅读欢迎交流点个赞关注一波 再走吧
欢迎点赞关注收藏
朋友们你的支持和鼓励是我坚持分享提高质量的动力 好了本次就到这里
技术是开放的我们的心态更应是开放的。拥抱变化向阳而生努力向前行。
我是阿兵云原生欢迎点赞关注收藏下次见~
文中提到的技术点感兴趣的可以查看这些文章
OAUTH之钉钉第三方授权 JWT身份认证(附带源码讲解) go-zero jwt 鉴权快速实战 可以进入地址进行体验和学习https://xxetb.xet.tech/s/3lucCI