SSO单点登陆

最近项目做一个统一portal,各个应用模块统一入口,人员账号统一。
单点登陆时序图


应用A
应用B

在日常调试过程中遇到的跨域问题:
1、项目中支持跨域请求

  • 使用@CrossOrigin注解 @CrossOrigin(origins = {"http://domain1.com", "http://domain2.com"})

当发生跨域请求时,浏览器会发起两次请求,第一次为预检请求,其请求方法为OPTIONS,第二次为真实请求。只有当第一次请求成功后才会发起第二次请求。这个时间间隔是上面例子中配置的maxAge(long)。

所以在拦截器或者过滤器对token进行验证的时候处理,OPTIONS的请求是不会带有认证信息,所以需要跳过OPTIONS请求。

String method = request.getMethod();
if(method.equals("OPTIONS")){
  // 放行
} else {
  // 验证token
}

2、请求之间Cookie传递

  • 不同域名之间Cookie不能传递
  • 域名和ip之间Cookie不能传递
  • 同一IP,不同端口Cookie是共享的
  • 二级域名与二级域名之间Cookie传递,需要将Cookie域设置在顶级域名下

结合Nginx和本地hosts大多数单点登陆的场景都能覆盖测试

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、背景 上次做淘宝客项目用到了shiro,做了一个简单的单点登陆系统,同时,前后端分离是公司必走并且正在走的道路...
    civism阅读 1,756评论 0 9
  • 单点登陆的大概意思就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得...
    b12af9baadf4阅读 2,364评论 3 3
  • 实例:用户在A网站登陆,B,C,D,E网站也同时登陆。 1:用户A在A网站登陆,然后进入到S(用户身份认证中心)进...
    王波_d9a3阅读 2,038评论 0 0
  • 简介 首先声明本文章是在不要乱摸基础上进行部分修改,思路和核心代码未做调整,写本片文章主要是为了加深自己的单点登陆...
    久伴我还是酒伴我阅读 4,548评论 0 12
  • 【90天写作】 打卡第五天 2017年3月 20日 小李,我的同事, 年轻姑娘,大大咧咧,有小资情结,遇事淡定。她...
    幻影QS阅读 228评论 0 0