携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
单点登录
概念:多个系统,在一个位置登录后,实现多个系统同时登录的一种技术. 专业的讲,单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是比较流行的
实现方式
-
session跨域 session跨域就是摒弃了系统(tomcat)提供的session,而是用自定义类似session的机制老保存客户端数据的方案 前提:服务器域名不同,但是拥有相同的上级域名,比如id.qq.com、www.qq.com、user.qzone.qq.com,它们都有公共的上级域名qq.com。 例如:通过服务端置cookie的domain(qq.com,以上都匹配。所以都可以共用同一个cookie)来实现cookie的跨域传值,在cookie中传递一个自定义的session_id,这个session_id是客户端的唯一标识,将这个标识作为key,将客户端需要保存的数据作为value,在服务器进行保存,这种机制就是session的跨越
-
Spring session共享 spring-session技术是spring提供的处理集群会话共享的解决方案。spring-sessin技术是讲用户的session数据保存到第三方存储容器中,例如 mysql ,redis等 spring-session解决的是同域名下的多服务集群session共享,不能解决跨域session共享, 一个用户访问量大的服务,背后肯定是要靠集群支持,但是集群中的服务器都是相对独立的,就需要一个数据共享的方案。
-
nginx Session共享 nginx可以作为反向代理服务器,可以为反向代理的服务器集群做集群管理和负载均衡。 nignx 中的ip hash 技术能将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash 是在upstream配置中定义的,
-
token机制(现代常用 sso 完美方案) 使用token的身份验证方法,在服务端不需要存储用户登录记录,
客户端使用用户名和密码请求登录 服务端收到请求,去验证用户名和密码, 验证成功后,服务器签发一个token,把这个token发送给客户端, 一般是种再cookie里,也可以由客户端自己存储在localstorage里 此后,客户端每次请求都按约定的方式带着服务端签发的token 服务端收到请求后,去验证客户端请求携带的token,验证成功后,就返回数据 使用token验证的优势,无状态,可扩展