SSO单点登陆
2019-11-26 本文已影响0人
OPice
最近项目做一个统一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大多数单点登陆的场景都能覆盖测试