vs登录后跳转的页面运用用户名_理解单点登录 开篇

79e474f0878ea0f28f1f66e601699999.png 单点登录(Single Sign On, 以下简称SSO) 是目前解决多系统之间相互信任统一登录 最流行的解决方案。引言

设想这样一个场景,企业内部有上百个业务系统, 每个业务系统都有自己独立的用户名密码进行鉴权登录,员工需要记住很多套账号密码。而且在不同业务系统之间办公,需要频繁进行登录操作,这样的体验是非常糟糕的。

其实在企业内部一般都会维护一套OA系统,每个员工都有自己的OA账号和密码,那可不可以每个业务系统都使用OA账号来登录呢?如果所有业务系统使用的都是OA账号密码登录,那可不可以在任意一个业务系统登录,就可以访问其它的业务系统呢?

单点登录技术的出现就是为了解决这个问题,实现一次登录,就能访问相互信任的其它所有应用系统。

单点登录的交互流程 假设现在只有 A,B 两个系统,如果 A 登录之后,B 也要登录成功,我们可以在 A 登录后调用 B 的一个接口,告诉 B 系统,谁(用户名密码)登录了。B 系统也实现同样的操作,那么两个系统之间的单点登录也就完成了,但这无形中形成了两个系统之间的耦合。而且如果像前面提到的,有上百个业务系统呢,这种方式显然不合适了。 此时单点登录系统应运而生,其实它有点像一个第三方权威机构,统一接管各系统的用户认证工作并且给各系统发放票据(ticket或token)。要接入单点登录的业务系统,需按照单点登录的协议或者规范完成相应的技术改造即可。 下图列举了两个业务系统与单点登录系统之间的交互流程。

9f9cbe59c290d79416c0280ab1aa8f20.png

 

用户在浏览器输入OA系统的地址,请求访问OA系统,由于接入了SSO,不清楚当前是否已登录,所以返回302给浏览器浏览器接到302响应,重定向到SSO系统验证SSO校验用户未登录,返回浏览器用户名密码登录页面用户输入账号密码SSO校验账号密码通过,返回浏览器302(此时会向浏览器设置SSO的Cookie)跳转到一开始OA系统的地址,加上了token参数OA系统拿着token,去找SSO校验SSO校验通过OA系统返回浏览器业务系统页面...

  整个交互流程看似很复杂,其实真正用户参与的只有图中蓝色标注的三个步骤。其中第1、第11步是用户在浏览器输入系统地址,而第5步需要用户输入一次用户名和密码。 如果OA系统是个门户网站,里面嵌入了其它业务系统的网址超链接。用户只需要打开浏览器,输入OA网址,成功登录之后,在OA系统提供的网址导航中点击其它系统的超链接,就可以直接访问了。Amazing! 从用户的角度来说,单点登录其实是无感知的,只知道自己输入了一次用户名密码而已。相比之前每个业务系统输一遍,体验感与幸福感飙升。揭开单点登录的面纱

01 浏览器 + HTTP Redirect (302) HTTP协议的状态码都有各自运用的场景,302是告诉客户端,需要跳转到服务器返回的location地址。在上图中,出现了很多次重定向,这些重定向都是浏览器和服务器之间交互完成的,所以用户并没有感知。02 Service(callbackUrl/redirectUrl) 单点登录系统,不可能允许任何系统过来尝试登录或者恶意登录。每个接入单点系统的业务系统,称作一个Service(也有称Client)。业务系统必须要先在单点登录系统管理侧注册,并且提供一个回调接口。单点登录系统登录之后,会先校验Service是否合法,通过之后,就会通过浏览器302到回调地址,从而实现系统间的交互。03Cookie HTTP协议是一种无状态的交互协议,客户端负责请求,服务器负责响应。Cookie的出现,是为了让服务器知道请求之间的关系,cookie像是服务端安排在客户端的哨兵。有了Cookie之后,服务器就可以知道,是谁(客户端/背后的用户)在发送请求,从而对请求进行控制。例如,检查到你没有Cookie,会你先跳转去登录(上图中的第2,12步)。

624372dab9ed369d30da0cf1b323a155.png

681289cad65392fd8ca8f0e15540c526.png

 (图片来源 《图解HTTP》(上野 宣 著 于均良 译))

OA系统的登录过程,与正常的业务系统登录无异。而访问财务系统再次去SSO认证时,为何SSO知道此时以及登录成功?没错,答案就是Cookie。 OA系统在单点登录系统登录成功之后(第6步),单点登录系统会给浏览器设置Cookie。这样后面不管是财务系统还是其它系统,再次到SSO认证时,都会带上SSO的Cookie,而这个Cookie是有效的,所以无需再次登录,直接给财务系统返回了Token,登录成功. 同一个域名下的请求,浏览器会默认在Header中带上Cookie(满足path限制)小结

本篇介绍了单点登录技术的基本概念,希望读者能对它的交互流程,原理以及应用场景等有一个基本了解。单点登录目前有很多成熟的协议实现,如CAS,OAUTH/OAUTH 2.0,JWT,OpenIDConnect和SAML等,应用最广泛当属CAS协议。在下一篇文章中,笔者将通过深入分析CAS协议的实现原理,带大家进一步体会单点登录的魅力。

敬请期待下一篇《理解单点登录 - CAS 协议分析》

 6d03cad02ea1f871162e1ba0b74a3fee.gif

往期推荐

化整为零(二) 2020-08-10 化整为零(一) 2020-08-03 基于零信任打造的封闭访问空间 2020-07-06

adba415b346c6ad9fc0b1a347b9e0390.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值