单点登录(SingleSignOn,SSO)就是用户完成一次应用系统登录,便可以免登访问多个其它应用系统,这里所说的应用系统是相互信任的。

通常SSO都是企业内部多个应用之间,一个企业一般有一个顶级域名,应用系统使用二级域名来区分,只要实现了cookie在二级域名之间共享,那就实现了一次登录,到处免登。

比如顶级域名为 .star.com,现有app1.star.com,app2.star.com,两个应用都有自己(登录鉴权等)拦截操作,拦截这部分在代码形态上是可以单独剥离出来的。

此时可以单独部署一个用来登录鉴权的cas.star.com,未登录拦截时跳转cas.star.com发起登录,也可以直接由应用自己发起登录操作,这里就以应用自己发起登录操作。

只需解决两个问题:

  • 1.在app1或app2登录完成后,写入浏览器cookie,域名设置为star.com,这样二级域名下的应用都可以共享这个cookie。

  • 2.cookie关联的session要写入公共中间件,通常使用redis保存<sessionId,attrs>,以便session可以在多个应用间共享。

画个图比较清晰一些,这就是同域下共享cookie的方案,但是不同域之间cookie是无法共享的,所以有了cas的解决方案,算是本方案的一个升级,本质上还是如何实现session共享的问题。


©著作权归作者所有:来自51CTO博客作者mb5fdb0a4002420的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 详解微信小程序登录wx.login(Object object)
  2. 功能测试——app测试要点最全分析
  3. 克隆虚拟机和相互登录
  4. 一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)
  5. 共享单车IOT物联网系统是怎么设计的?
  6. 最新工具:某网盘不限速下载器KinhDown,下载速度可达10MB/S
  7. 用sa-token轻松解决网站权限验证
  8. 一个登录功能也能玩出这么多花样?sa-token带你轻松搞定多地登录、
  9. csdn账号密码登录剖析(模拟登录)

随机推荐

  1. go的websocket实现(附代码)
  2. go语言time包的一些使用方法
  3. go语言中的并发介绍(附代码)
  4. Go中string转[]byte的陷阱
  5. go语言中goroutine的使用详解
  6. go微服务框架go-micro整体架构介绍
  7. 完全掌握Go的pprof使用方法
  8. vscode中的Golang配置介绍
  9. go语言中并发图文教程
  10. “12306”的架构到底有多牛逼?