分享更有价值
被信任是一种快乐

如何使用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”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注云技术行业资讯频道。

相关推荐: HTML中的

这篇文章主要为大家展示了“HTML中的   HTML中fieldset标签的定义和用法:   fieldset元素可将表单内的相关元素分组。      当一组表单元素放到      标签为fieldset元素定义标题。   组合表单中的相关元素:   看实例 …

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册