zoukankan      html  css  js  c++  java
  • 系统间账号认证系统同步方案

    系统间账号认证系统同步方案

     

    基础原理:(基于Web)

    浏览器在个请求传递cookie到服务器,服务器对cookie增删改查的操作, 写入JSessionId实现与服务器Session的绑定,保持会话

    单机情况下:一个域名,对应一个cookie,对应一个JsessionId,与一个服务器Session会话

     

    基于原理解决方案需要解决两个问题:

    1. Cookie在不同域名(系统)间的传递问题

    2. 服务器Session在不同服务器

     

    问题1的解决方案:

    cookie中的数据有三个属性:domain、path、name。cookie新增和删除,没有修改选项,name相同,domain以及path不同,当做不同的cookie来处理

    又衍生出了两种情况:

    在同一个域名以及子域名下面的处理方式:使用domain绑定顶级域名

    在不同域名下面的系统的处理方式:通过sso的模式,传递ticket,验证ticket获取用户信息,生成自己的sessionId到cookie中

     

     

    问题2的解决方案:

    部署在同一台服务器:使用堆外内存,磁盘缓存来实现:ehcache

    部署在不同服务器:使用redis、memcache缓存来实现

    实现方式:

    框架:spring-session、shiro-SessionManager模块、使用redis客户端

    自研:修改实现JavaEE关于Session的增删改查,实现分布式回话

     

    上述问题比较麻烦的就是不同域名下系统的解决方案:单点登录

    底层方案:

    JavaEE接入Cas的客户端和服务端实现手动实现单点登录

    使用框架:

    spring-cas

    shiro整合cas

    其他方式:

    零侵入整合业务系统:https://www.cnblogs.com/baibaomen/p/sso.html

     

    Tomcat容器其实实现了对应的Cookie的配置,但是过于依赖容器,在代码中实现,而非在运维层面上实现是更好的选择。

     

    参考资料:

    单点登录时序图:https://www.cnblogs.com/baibaomen/p/sso-sequence-chart.html

    github单点登录资料:https://github.com/baibaomen/BaibaomenSsoLesson

    域名之间的cookie共享情况:https://segmentfault.com/a/1190000006932934?utm_source=tag-newest

    JavaEE基础教程书籍:《JavaWeb整合开发王者归来》熟悉JavaEE基本对象以及基础流程以及原理,容器只是基础规范的实现

  • 相关阅读:
    委托
    反射
    ADO.net五大对象
    DNS协议详解
    FTP协议详解
    .Net 多线程 异步编程 Await、Async和Task
    AsnycLocal与ThreadLocal
    Angular 6.X CLI(Angular.json) 属性详解
    Angular Npm Package.Json文件详解
    Npm常用命令整理
  • 原文地址:https://www.cnblogs.com/fly-piglet/p/11059300.html
Copyright © 2011-2022 走看看