1.为什么有单点登录
web应用早已从久远的单系统发展到如今由多系统组成的应群,面对如此众多的系统,用户难道要一个一个登录,这显然不现实。单点登录就是为了解决这一问题。
web应用的复杂性应该由系统内部承担,而不是用户。无论web系统内部多么复杂,对用户而言,都是一个统一的整体,也就是说,用户访问web系统的整个应用群与访问单个系统一样,登录一次就够了。
2.单点登录的实现方案
1.session共享实现单点登录,这种方案并不常用,因为借助于session,而session的底层是cookie,所以,如果使用这种方式,要求客户端必须支持cookie
2.使用token,可以使用原本的OAuth2协议,也可以自定义认证流程
具体流程
(1)客户端发送用户名/密码到服务器
(2)服务器拿到用户名密码后进行认证操作
(2.1) 认证成功的话,生成一个token,以token为key,用户信息的JSON字符串为value,将数据存储到redis上,同时,设置数据过期时间,最后再将token返回 给客户端。
(2.2)认证失败的话,直接返回认证失败的信息即可。
(3)客户端拿到服务端返回的token后,将之保存,以后,客户端发起任何请求时,都需要携带上该参数,服务端在处理客户端请求时,提取出token,去redis中查询数据,如果能查到,就能获取到用户的所有信息,包