单点登录的三种方式

单点登录:简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。简单来说,一个公司有多个应用,都要进行注册登录,退出的时候又要一个个退出。用户体验很不好。单点登录可以实现:登录的时候只要一次登录,退出的时候只要一次退出。

单点登录实现的方式:

父域Cookie(同主域名)
  • cookie: cookie的作用域由path和domain共同决定,domain的值为当前域或其父域的域名/IP地址。path 默认为当前 Web 应用的上下文路径。
  • 父域: 父域的cookie可以被子域所共享。
    结论:可以将token储存到父域中,将domain设置成父域名,path设置为根路径。实现简单,但不支持跨主域名

认证中心(不同主域名,最常用解决方案)
  • 认证中心: 一个专门负责处理登录请求的独立的 Web 服务。(每个系统的登录操作都是通过认证中心实现的。)
    实现过程:访问应用时,会判断是否登录,未登录则会跳转至认证中心,认证中心登录成功之后会在认证中心写入cookie,应用中无法访问。应用则是通过认证中心跳转的url中取到用户登录成功的token,再将token存储在当前应用中
    结论 支持跨域,扩展性好,是单点登录的标准做法。但当应用A中使用iframe嵌入应用B时,则会出现一闪而过的认证中心登录界面。

LocalStorage 跨域(不同主域名)

采用LocalStorage存储token, 但localStorage不支持跨域,则需要登录一个网页时,需要在本网页在localStorage时,也需要为其他的页面写入相应的token.

  • iframe: 可以嵌入其他页面,通过postMessage进行安全的传值。
  • 目标网页: 可以通过addEventListener监听postMessage的信息,从而得到相应的token信息。

扩充

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容