2018_02_26 sso原理解析

sso单点登录适用于多系统共享登录信息时,需要一个特定的sso认证中心来处理用户的登录,注销请求,传统的登录操作中,用户通过浏览器发送登录请求到服务器上,服务器会创建一个回话,并将此次回话的sessionid返还给浏览器,浏览器拿到的sessionid作为这个用户用来访问服务器的jsessionid,每次发送访问请求时,都会将这个jsessionid带上,同一个用户发送第二次请求时,服务器校验jsessionid是否有效,如果有效,允许访问受保护的资源,如果无效,跳转到登录界面,这是传统的登录操作,但是web系统中越来越多的系统采用了分布式,即将一个系统拆分成多个子系统整合组成一个系统,这种情况下,用户登录一个系统时就需要进行登录的操作显然是不合理的,这部分登录验证的操作应该交给系统自己完成,由此就诞生了sso单点登录系统,它的出现是为了解决多系统登录注销验证多次的问题,即以前浏览器请求服务器的请求,将交由sso认证中心进行验证,即用户A访问一个购物网站的首页系统时,filter拦截器拦截访问请求,判断此次请求过程中,是否有已经生效的令牌,如果没有,跳转到登录页面,进行登录,登录校验过程是由sso认证中心来完成的,当校验通过,将A用户的登录状态修订为登陆成功状态,此时创建全局会话,并创建token令牌,只要保证此令牌唯一不可重复即可,uuid为例,此时跳转到A用户请求的地址1,校验令牌是否有效可用,如果可行,即可访问地址1中的保护资源并创建局部会话,如果不可行,不允许访问,此时如果A用户继续想访问地址2的商品系统,可以直接判断令牌是否存在,是否有效,如果都通过,放行访问并创建局部会话,全局会话与局部会话之间的关系,局部会话存在一定要有全局会话;全局会话存在,可以没有局部会话;全局会话销毁的同时,要同时销毁所有的局部会话。用户注销过程中,一定要保证销毁全局会话的同时,销毁已经建立的局部会话。(局部会话存储在redis中,因为在注销过程中要明确将注销的子系统都有哪些,存储格式为key:token,value:请求地址)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章