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

系统间帐号认证系统同步方案html

 

基础原理:(基于Web)git

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

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

 

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

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

2. 服务器Session在不一样服务器浏览器

 

问题1的解决方案:缓存

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

又衍生出了两种状况: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基本对象以及基础流程以及原理,容器只是基础规范的实现

相关文章
相关标签/搜索