如何使用Nodejs实现SSO


今天小编给大家分享一下如何使用Nodejs实现SSO的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,免费云主机域名下面我们一起来了解一下吧。随着公司业务的增多,必然会产生各个不同的系统,如果每个系统都需要单独登录的话就会很不方便。因此产生了单点登录这样的解决方案,单点登录全称 Single Sign On,简称SSO,意思是在多个系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录。比如小明今天登录了淘宝,如果没有登录,就会被要求输入认证信息(用户名密码等),登录过后再去访问天猫的页面时就不需要登录可以直接访问。SSO 需要有一个独立的认证中心,只有独立的验证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。
整个过程可以简单的用上图描述:当用户登录访问应用A时,应用A发现用户未登录,跳转至SSO认证中心,并将自己的地址作为参数方便回调SSO认证中心发现用户没有登录过,将用户引导至登录页面;用户填写用户名密码提交登录申请;SSO认证中心校验用户信息,创建用户雨SSO认证中心的会话(这时会把信息保存到cookie中),同时创建授权令牌tokensso认证中心带着令牌跳转到最初的请求地址(应用A)应用A拿到令牌去SSO认证中心认证是否有效,如果返回有效注册应用A应用A创建与用户之间的会话,展示资源并维持用户登录态当用户访问应用B时,发现用户未登录(SSO认证服务器与应用A应用B不是同一个域,不能提供登录态),跳转到SSO认证中心,并将自己的地址和之前和SSO认证中心会话的cookie信息带入SSO认证中心发现用户已登录,跳转回应用B地址,并附上令牌token同样的应用B拿到令牌去SSO认证中心认证是否有效,如果返回有效注册应用B应用B创建与用户之间的会话,展示资源并维持用户登录态三个不同的服务这里我们需要启动三个服务来分别模拟 应用A,SSO认证服务器和应用B这里端口号 8383的服务是SSO认证服务器,其余的 :8686 和 :8787 分别代表应用A与应用B。其实应用A与应用B的代码几乎一样,如上图所示我们可以通过穿参的方式来设置不同的端口及应用名。先来看下效果首次访问跳转至登录页应用A判断登录态,跳转到SSO认证服务器应用A认证服务器判断登录态,渲染登录页认证服务器SSO认证服务器的目录结构如下
主要处理两个功能,一是登录逻辑,二是之后验证令牌的有效性,分别有路由 login.js 和 check-token.js 处理Auth/index.js刚才我们从应用A跳转到 http://localhost:8383/login?redirectUrl=localhost:8686来看login中的逻辑
Auth/routes/login.js登录页面Auth/views/login.ejs校验用户信息,创建令牌Auth/routes/login.js从认证服务器携带令牌跳转回应用A令牌校验 返回资源应用A与之对应的 SSO中处理验证令牌的逻辑
Auth/routes/check-tokenAuth/service/index.js至此用户已经能正常访问应用A,SSO服务器和应用A服务器上都有了用户登录过的信息。访问应用B带cookie跳转至SSO认证服务器应用B从认证服务器携带令牌跳转回应用BSSO认证服务器 ,再次登录时携带了cookie,因此不会再请求登录页面
Auth/routes/login令牌校验 返回资源这里的逻辑和5,6两步一样,因为token容易伪造,所以要检验真伪。
应用B至此单点登录的大部分逻辑都已经完成,之后再session有效期内再访问页面,就不需要再登录,直接返回资源以上就是“如何使用Nodejs实现SSO”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: vue怎么实现列表拖拽排序效果

这篇文章主要介绍“vue怎么实现列表拖拽排序效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么实现列表拖拽排序效果”文章能帮助大家解决问题。效果如下:关于“vue怎么实现列表拖拽免费云主机域名排序效果”的内容…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/24 16:34
下一篇 04/24 16:34

相关推荐