你必须要懂的单点登录(SSO)原理和实现
Posted CodeSheep
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你必须要懂的单点登录(SSO)原理和实现相关的知识,希望对你有一定的参考价值。
来源丨weienjun
blog.csdn.net/weienjun/article/details/80059691
HTTP是无状态协议,浏览器的每一次请求,服务器都会独立处理,不与之前或之后的请求产生关联,所以,任何用户都可以通过浏览器访问服务器资源。
其实前文《》已经非常深入的讨论过cookie和session了。
session是服务器级别的,cookie是浏览器级别的。
session:浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,之后浏览器的每一次访问服务器都会带上会话id,服务器根据会话id就知道是不是同一个用户了。
cookie:session机制每一次浏览器访问服务器,服务器都要判断一次会话id,显然不太合适。于是浏览器来维护会话id就是cookie机制。浏览器每次访问服务器都会自动附带cookie信息。
cookie和session机制就可以确保一个用户登录到一个系统后,之后的操作在一定时间内就不需要再次登录系统。
以上的 session和 cookie都只适用于单系统,但是系统数量变多成为多系统时,我们总不能访问一个分支系统就登录一次吧,于是将这些子系统的域名统一到一个顶级域名中,然后将cookie域设置成顶级域名,于是各个子系统之间就可以共享cookie。
是什么
单点登录全称 single sign on,简称 SSO,指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录和单点注销两部分。比如你用阿里系产品,你一旦打开浏览器登陆过淘宝网,接下来你会发现你再打开天猫,其竟然自动登录了!
从哪来
由于共享 cookie有很多局限性。例如:域名难以统一,子系统技术难以统一。所以,需要一种全新的登录方式实现多系统应用群的登录 单点登录。
登录
sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。具体过程如图所示:
操作步骤如下:
-
用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数 -
sso认证中心发现用户未登录,将用户引导至登录页面 -
用户输入用户名密码提交登录申请 -
sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌 -
sso认证中心带着令牌跳转会最初的请求地址(系统1) -
系统1拿到令牌,去sso认证中心校验令牌是否有效 -
sso认证中心校验令牌,返回有效,注册系统1 -
系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源 -
用户访问系统2的受保护资源 -
系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数 -
sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌 -
系统2拿到令牌,去sso认证中心校验令牌是否有效 -
sso认证中心校验令牌,返回有效,注册系统2 系统2使用该令牌创建与用户的局部会话,返回受保护资源
更多热文在此:
●
●
● 的SSO单点登录+JWT权限控制实战
●
●
●
●
●
●
以上是关于你必须要懂的单点登录(SSO)原理和实现的主要内容,如果未能解决你的问题,请参考以下文章