个人经验,简单实现单点登录

什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分;

个人经验,简单实现单点登录_第1张图片

                                                    图一

图一描述的是用户首次登陆步骤:

1.用户试图访问服务器A的服务器资源,系统发现用户未登录,跳转至sso认证中心,并将自己的项目的地址作为参数(参数我们这边是用SMAL格式的数据进行交互)

2.sso认证中心发现用户未登录,将用户引导至统一的登录页面

3.用户输入用户认证信息,向sso服务器发起认证请求

4.SSO认证中心认证用户信息是否准确,通过认证则保存本地sso_session,再由step2中获取的项目A地址,重定向至项目A并附带用户的一些基本信息

5.项目A从sso返回的一些用户信息中判断用户是否在项目A中存在,如存在则登陆成功至首页,并保存sp_session会话。

个人经验,简单实现单点登录_第2张图片

                                                      图2

图2描述的是客户登陆过系统A,然后登陆系统B和C的流程

1.用户试图访问服务器B/C的服务器资源,系统发现用户未登录,跳转至sso认证中心,并将自己的项目的地址作为参数(参数我们这边是用SAML格式的数据进行交互)

2.sso认证中心发现该用户已经登录过(由sso服务器存在的sso_seesion做判定,其他方式也可以),直接重定向至项目B/C并附带用户的一些基本信息,直接登陆,并保存会话sp_session。

全程靠重定向实现,用户零感觉~~!

个人经验,简单实现单点登录_第3张图片

 图3描述是用户注销系统A,同时注销系统B和C,实现单点注销

1.客户通过服务器A发起退出系统请求,系统将注销请求重定向至sso服务器

2.sso服务器首先注销掉本地sso_session,然后通过重定向,调用已登陆系统(B和C)的注销接口,清除系统B和C的本地sp_session,来实现单点注销。

以上均为本人在开发项目中学到的,有什么错误的地方,请大家多多指教!!!其中SAML是一种xml语言可用作保存参数及敏感信息用。

如文章对你有帮助,请打开支付宝领取红包,以对我的鼓励,哈哈哈

你可能感兴趣的:(SSO单点登录)