“单点登录”方案全解析 | 开发研习社笔记

Posted 支点在线阅读号

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“单点登录”方案全解析 | 开发研习社笔记相关的知识,希望对你有一定的参考价值。

单点登录(Single Sign On),简称为 SSO。意为在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。


例如,我们在浏览新闻时登录腾讯网,在访问腾讯QQ空间时即显示已经在线。这种不需要再次登录的技术就叫做单点登录。


单点登录中需要解决以下两个问题:


1、服务器如何获知用户已经登录

以豆瓣登录为例,打开豆瓣的登录网站,输入用户名密码。



点击登录后,通过浏览器的开发者工具进行抓包。

“单点登录”方案全解析 | 开发研习社笔记



此次登录完成后,用户利用浏览器进行再次访问时,会把cookie信息传递给服务器,服务器根据这些信息判断用户当前的状态是否已经登录过,如下图。

“单点登录”方案全解析 | 开发研习社笔记


2、一个点登录后,如何传递到其他点


如图:在各种应用服务后,有一个统一认证系统,用来唯一地处理登录认证,其他应用均通过系统来获取权限。


“单点登录”方案全解析 | 开发研习社笔记


过程解析:在访问应用站点1时,会判断用户是否带有登录凭证,如果没有则让浏览器跳转到SSO网址上进行登录。SSO网站登录后就会设置cookie到浏览器中。同时跳回到应用站点1,返回的信息中带有cookie和用户凭证。此时若用户再到应用站点2进行访问,则也带有cookie,可以做到免登陆。


但是这种方式具有缺陷,采用cookie的方式是不能跨“域”的。例如若用户在客户端上已经登录了,浏览器怎么知道呢?


而类似于MSN这种可以跨域的单点登录,登录凭证并非放在cookie中,而是放在一个http url的参数后,或者http post 的content里

“单点登录”方案全解析 | 开发研习社笔记


单点登录一定会有一个登录鉴权的服务器,其他的应用服务器只是处理业务上的事情。一般情况下,登录凭证验证的机制有两种:


“单点登录”方案全解析 | 开发研习社笔记


两种方式的架构原理:


1)登录凭证由SSO发出并鉴权。SSO服务器来验证鉴权,更可靠,而且机制更多。缺点是服务器任务非常重,因为在进行一些敏感操作时,都需要判断用户的身份,导致所有的请求都传递到鉴权服务器。


2)应用服务器自己鉴权。需要和SSO之间保持一致的鉴权机制,按照一定的规则进行约定。缺点是鉴权的方式不够灵活,同时一旦鉴权方式被泄露,可以通过伪造用户身份进行访问,安全性不够。


两种方式的使用流程:


1)第一种:应用服务是SSO sever的一个client。浏览器访问网站1时发现没有认证,则会到SSO sever中进行鉴权,鉴权完成后会携带用户登录信息返回。再次访问网站1时会带有登录凭证,此时应用服务器1就会充当client的角色向SSO sever发出请求。在访问网站2时也是同样的方式。

SSO sever负责的是给浏览器发放凭证,然后给client进行凭证的鉴定。



本次的开发研习社笔记分享就到这里了~下周的开发研习社:11月17日,技术总监Sherwin来解读你不知道的编程设计原则如果你也在课堂中,跟技术大牛现场互动的话,关注订阅号回复“kf”报名参加吧~



一线互联网产品经理、技术总监给你支点

点击阅读原文获取更多免费在线课程

以上是关于“单点登录”方案全解析 | 开发研习社笔记的主要内容,如果未能解决你的问题,请参考以下文章

从http验证流程解析CAS单点登录

单点登录原理解析

开发笔记单点登录CAS测试登录Invalid credentials无效凭据

用java来实现单点登录大概都有哪些种方法

谈谈单点登录

初识单点登录及JWT实现