SSO单点登录笔记(原理)

SSO单点登录(原理)

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

-------------------------------------------------------------------------------------------------------------------------------------------------------

相比于单系统登录,sso需要一个独立的认证中心只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。这个过程,也就是单点登录的原理,用下图说明

单点登录客户端Cookie和服务端Session图解

步骤1:

描述:初始状态:没有请求,服务端没有session,客户端也没有cookie

步骤2:

描述:当客户端访问www.crm.com时,本地没有cookie,在crm.com服务端中查看是否有局部session,此时发现crm.com系统并没有,尴尬的局面需要缓解一下,需要查看统一认证中心(sso.com服务端)是否有登录(然而此时并没有,虽然合乎情理,但又尴尬了),此时,需要做一件很重要的事情:把当前请求的地址作为参数传递给统一认证中心!!!

步骤3:

描述:由于这是客户端第一次对这个系统的访问,客户端浏览器Cookie中的sso.com目录也没有cookie,所以sso.com服务端也没有全局的session,这时候调用sso.com中的checkLogin方法查看当然不会有全局的session。

步骤4:

描述:此时需要把redirectUrl从地址栏中获取出来,把这个参数放入到request域中,一起转发到统一认证的登录页面。

步骤5:

描述:在统一认证中心登录界面输入账号和密码,并带着上一次访问的地址(因为登录成功以后,需要跳转到上次访问的页面)请求到 sso.com服务端进行身份校验(查询数据库);校验成功即后台登录成功,需要在sso.com中创建session对象和token(令牌),并把这个token信息放入到session中,方便后续的校验;把session的id以cookie方式写入到客户端的浏览器中;重定向到最开始访问的页面(会带着sso.com产生的token)

步骤6:

描述:客户端浏览器重定向到crm.com&token=*****,过滤器拦截到请求,判断是否有局部session,发现其并没有,但是带着token参数,则此时为了保证安全,必须检验token的有效性,即判断这个token是否来源于统一认证中心。

步骤7:

描述:使用HttpURLConnection发送请求(这个请求带着token)到sso.com服务端,sso.com查询数据库,看是否存在该token,如果存在,则返回ture,否则返回false

步骤8:

描述:crm.com服务端接收到sso.com服务端的响应(token是ture还是false),若结果为ture,crm.com服务端就会创建局部session,并设置属性isLogin=ture;放行客户端的请求,客户端显示请求的页面,同时,将crm.com服务端的JSESSIONID写入到客户端的Cookie的crm.com目录下,方便第二次及之后的访问!!!

步骤9:

描述:第二次访问crm.com时,请求会把本地浏览器的Cookie带上(当然是crm.com目录中的),在crm.com服务端能找到对应的session,并得到相应的isLogin的属性,是ture,说明已经有局部会话了,此时就放行请求

步骤10:

描述:访问wms.com服务端的原理同上

步骤11:

步骤12:

步骤13:

步骤14:

步骤15:

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值