单点登录Cookie和Session存储流程

时间:2024-04-09 18:11:51

1、首先我们会有三台机器,一个统一认证中心(sso),两个系统(crmwms
单点登录Cookie和Session存储流程
 
2、这个时候我们向crm系统发起一个请求,第一次访问www.crm.com/employee,发现本地并没有cookie,然后在crm系统中查看下是否有局部会话,发现也没有,这个时候就需要去统一认证中心查看是否登录,并且要把当前请求的地址作为参数传递给统一认证中心
单点登录Cookie和Session存储流程
 
3、这个时候调用sso.com中的checkLogin方法查看是否有全局会话(如果有则说明已经登录),但是在本地浏览器sso.comcookie中并没有发现cookie,所有也没有全局会话,此时需要把url从地址栏中获取出来,并把这个参数放入到request域中,转发到统一认证中心的登录页面,进行登录
单点登录Cookie和Session存储流程
 
4、转发到统一认证中心登录页面后,需要把url放入到登录表单中,因为登录成功之后,需要继续访问上次访问的网址:www.crm.com/employee
单点登录Cookie和Session存储流程
 
5、在统一认证中心登录页面输入账号和密码,后台登录成功以后,需要创建一个session对象,并且还要创建令牌tokensession.settribute("token","OSPIKeVNE5fyjV8w");,并把这个token信息存储到session对象中以及后台的数据库中,方便后续的校验,然后请求响应给浏览器,并把sessionIdcookie的形式写入到本地浏览器中,然后重定向到www.crm.com/employee?token=OSPIKeVNE5fyjV8w,此时请求中带着一个token令牌
单点登录Cookie和Session存储流程
 
6、浏览器重定向到www.crm.com/employee?token=OSPIKeVNE5fyjV8w过滤器拦截到请求,判断是否有局部会话,发现没有,但是却有token参数,由于怕人为伪造token参数,此时需要判断token的有效性,需要去统一认证中心判断该token是否来自于统一认证中心
单点登录Cookie和Session存储流程
 
7、使用HttpURLConnection发送请求,www.sso.com/employee?token=OSPIKeVNE5fyjV8wsso.com系统获取到token,然后查询数据库,查询数据中是否存在该token,如果存在返回true,否则返回false
单点登录Cookie和Session存储流程
 
8、如果统一认证中心返回true,就创建局部会话,并设置属性isLogin=true,放行请求,然后返回响应,将sessionId存储到cookie
单点登录Cookie和Session存储流程
 
9、然后第二次访问的时候,请求会把本地的cookie带上(sessionId),如果在服务器中能找到与之对应的session,获取isLogin属性,如果值为true,则说明有会话,此时就放行请求
单点登录Cookie和Session存储流程
 
10、然后当我们访问wms系统,第一次访问,本地没有对应的cookie,服务器也没有局部会话,然后去统一认证中心查看是否登录,并且要把当前请求的地址作为参数传递给统一认证中心
单点登录Cookie和Session存储流程
 
11、此时在sso.com服务器中根据JSESSIONID可以获取到对应的session对象,说明统一认证中心已经登录了,然后重定向到wms.com,并把token带上
单点登录Cookie和Session存储流程
 
12、浏览器重定向到www.wms.com/employee?token=OSPIKeVNE5fyjV8w过滤器拦截到请求,判断是否有局部会话,发现没有,但是却有token参数,由于怕人为伪造token参数,此时需要判断token的有效性,需要去统一认证中心判断该token是否来自于统一认证中心
单点登录Cookie和Session存储流程
 
13、sso.com获取到tonken,并查询数据库是否存在该token,存在返回true,否则返回false;如果统一认证中心返回true,就创建局部会话,并设置属性isLogin=true,放行请求,然后返回响应,将sessionId存储到cookie
单点登录Cookie和Session存储流程
 
14、第二次访问,请求就会把本地的cookie带上(sessionId),然后在服务器找到与之对应的session,获取isLogin属性,若值为true,则说明有局部会话,此时放行请求
单点登录Cookie和Session存储流程