前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是单点登录

什么是单点登录

作者头像
程序员波特
发布2024-01-19 09:59:34
1140
发布2024-01-19 09:59:34
举报
文章被收录于专栏:魔法书魔法书

相同顶级域名的单点登录SSO

前言   在面试过程中有时候会被问到单点登录,那么单点登录又称之为Single Sign On,简称SSO,单点登录可以通过基于用户会话的共享,他分文两种,先来看第一种,那就是他的原理是分布式会话来实现。

  比如说现在有个一级域名为 www.cnblogs.com,是技术类网站,但是博客园还有其他的产品线,可以通过构建二级域名提供服务给用户访问,比如∶ ing.cnblogs.comnews.cnblogs.comedu.cnblogs.com等等,分别为博客园闪存,博客园新闻以及博客园班级等,用户只需要在其中一个站点登录,那么其他站点也会随之而登录。也就是说,用户自始至终只在某一个网站下登录后,那么他所产生的会话,就共享给了其他的网站,实现了单点网站登录后,同时间接登录了其他的网站,那么这个其实就是单点登录,他们的会话是共享的,都是同一个用户会话。

Cookie + Redis 实现SSO

  那么之前我们所实现的分布式会话后端是基于redis的,如此会话可以流窜在后端的任意系统,都能获取到缓存中的用户数据信息,前端通过使用cookie,可以保证在同域名的一级二级下获取,那么这样一来,cookie中的信息userid和token是可以在发送请求的时候携带上的,这样从前端请求后端后是可以获取拿到的,这样一来,其实用户在某一端登录注册以后,其实cookie和redis中都会带有用户信息,只要用户不退出,那么就能在任意一个站点实现登录了。

  • 那么这个原理主要也是cookie和网站的依赖关系,顶级域名 www.cnblogs.com*.icnblogs.com 的cookie值是可以共享的,可以被携带至后端的。
  • 二级域名自己的独立cookie是不能共享的,不能被其他二级域名获取,比如∶ news.cnblogs.com的cookie是不能被edu.cnblogs.com共享,两者互不影响,要共享必须设置为.cnblogs.com

不同顶级域名的单点登录

顶级域名不同怎么办?

  上一节单点登录是基于相同顶级域名做的,那么如果顶级域名都不一样,咋办?比如 www.imooc.com 要和 www.mukewang.com 的会话实现共享,这个时候又该如何?!如下图,这个时候的cookie由于顶级域名不同,就不能实现cookie跨域了,每个站点各自请求到服务端,cookie无法同步。比如,www.imooc.com下的用户发起请求后会有cookie,但是他又访问了www.abc.com,由于cookie无法携带,所以会要你二次登录。

那么遇到顶级域名不同却又要实现单点登录该如何实现呢?我们来参考下面一张图∶

如上图所示,多个系统之间的登录会通过一个独立的登录系统去做验证,它就相当于是一个中介公司,整合了所有人,你要看房经过中介允许拿钥匙就行,实现了统一的登录。那么这个就称之为CAS系统,CAS全称为Central Authentication Service即中央认证服务,是一个单点登录的解决方案,可以用于不同顶级域名之间的单点登录。在CAS中的具体的流程参考如下时序图∶

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相同顶级域名的单点登录SSO
    • Cookie + Redis 实现SSO
    • 不同顶级域名的单点登录
      • 顶级域名不同怎么办?
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档