单点登陆总结

一.非单点登陆模式(SSM环境)
总体思路:拦截Http请求,校验用户名密码是否正确;正确放行,否则跳转登录页。
实现方式:
1.使用servlet Filter实现。
2.使用spring mvc 拦截器实现。
下面介绍基于interceptor实现方式:

自定义类实现HandlerInterceptor接口。此接口有三个方法:
preHandle():预处理,Http请求被前端控制器DispatcherServlet拦截之后,到达具体controller之前执行的动作。
postHandle():Http请求执行完成之后,渲染页面之前执行的动作。
afterCompletion():页面渲染完成后执行的动作。
在preHandle()方法里加入登录逻辑的判断:校验通过,放行,并存放用户信息(用户id,角色code,权限code,部门等)到session里,同一个session无需再走是否登录逻辑。
spring-mvc.xml配置文件中配置自定义Interceptor。
多节点环境部署的话利用memcached做session共享,tomcate的context.xml配置如下:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        sticky="false"
        lockingMode="auto" 
        memcachedNodes="n1:172.0.0.1:8888" 
        requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"      
        sessionBackupAsync="false"      
        sessionBackupTimeout="100"      
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
        copyCollectionsForSerialization="false"  /> 

二.单点登陆
随着业务系统的增多,每个系统单独维护用户信息这种方式显得异常繁琐,不便维护。在多业务系统环境下,集中管理和维护用户,权限等信息。
原理:
这里写图片描述
拦截Http请求(Servlet Filter),校验是否登录;未登录则重定向到SSO认证中心,校验用户名和密码,成功并生成token作为参数返回业务系统,业务系统并保存此session(供单点注销使用)。部署图如下:
这里写图片描述
涉及两个单独工程:1.sso-client.jar(单点登陆Filter, 单点注销 Filter) 。2.sso-server.war(sso认证web工程,校验用户名密码以及token)
注意点:多节点部署业务系统,保存session时需要集中保存。
三.单点注销
删除sso的session及业务系统session。(session.invalidate())
流程如下图:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值