SSO单点登录

单点登陆

单系统登陆如何实现

示例:客户端向服务端发送请求,首次请求受保护资源时,服务端生成cookie并返回给客户端,客户端保存cookie。下次请求服务端时自动带上服务端相关域名的所有cookie,服务端收到cookie并检测是否存在,若存在则返回受保护资源给客户端。


总结:单系统登陆是依据cookie域(通常是服务端的域名)进行的,记录用户状态。

集群系统下单系统登录诟病

服务器集群环境下,不同系统的域名不一样,用户每次访问该系统时,都需要进行一次登陆操作,操作繁琐,用户体验感也差。
这个时候,单点登陆就可以解决我们的问题。

单点登陆

单点登陆(Single Sign On):是指在多系统应用集群环境下,只需要在系统登陆一次,就可以访问其他子系统且无需再次登陆。单点登陆还包括(注销模块)


原理:从系统集群中抽出用户中心模块,作为系统授权中心管理。
假设有集群中有系统1,系统2,用户中心三个系统。
1.当客户端首次访问系统1时,系统1去访问用户中心该用户是否已经登陆,用户中心响应用户未登陆,返回登陆页面(携带系统1地址)给客户端。
2.客户端直接向用户中心系统发起登陆请求,用户中心接受请求,校验通过后生成令牌(关键点),并创建全局会话,跳转到系统1(携带令牌)。
3.系统1接受到用户中心携带的令牌,再向用户中心发起令牌校验请求
4.用户中心校验令牌通过,向系统1注册用户信息,返回成功给系统1
5.系统1创建局部会话,并将受保护资源返回给客户端。
6-1.客户端下一次访问系统1,系统1根据局部会话是否存在,若存在,直接返回受保护资源。否则重复第1步操作。
6-2.客户端下一次访问系统2,系统2检测局部会话不存在,系统2去请求用户中心。
7.用户中心检测用户已登录,返回令牌给系统2。
8.系统2接收令牌后,向用户中心发起令牌校验。
9.用户中心令牌校验通过,给系统2返回成功信息
10.系统2创建局部会话,并将受保护资源返回给客户端。
11.客户端下一次访问系统1/系统2, 参照6-1/6-2即可。

单点注销


1.客户端向系统1发起注销请求
2.系统1向用户中心发起注销请求
3.用户中心校验用户登陆令牌通过,注销令牌,向各子系统发起注销令牌请求。
4.所有子系统注销该用户的登陆令牌


单点登陆指导:https://www.cnblogs.com/ywlaker/p/6113927.html

原文地址:https://www.cnblogs.com/winniejohn/p/9865892.html