单点登录有两种方式,一种是跨域,一种是不跨域。

一:在不跨域的情况下,

只需要将cookie设置为顶域状态,即可以实现cookie的共享。

二:跨域登录

用户访问app系统,app系统是需要登录的,但用户现在没有登录。
SSO登录系统。 SSO系统也没有登录,弹出用户登录页。
用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。
SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。
app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。
验证通过后,app系统将登录状态写入session并设置app域下的Cookie。

至此,跨域单点登录就完成了。以后我们再访问app系统时,app就是登录的。接下来,我们再看看访问app2系统时的流程。

用户访问app2系统,app2系统没有登录,跳转到SSO。
由于SSO已经登录了,不需要重新登录认证。
SSO生成ST,浏览器跳转到app2系统,并将ST作为参数传递给app2。
app2拿到ST,后台访问SSO,验证ST是否有效。
验证成功后,app2将登录状态写入session,并在app2域下写入Cookie。

这样,app2系统不需要走登录流程,就已经是登录了。SSO,app和app2在不同的域,它们之间的session不共享也是没问题的。

这里有个关键的地方,如何知道登录app2的用户就是app1的用户,因为在sso系统下有cookie,当app1登录的时候,会记录下一个cookie(cookie的value是一个ST),当app2没有登录的时候,跳转sso系统,sso系统查询得到自己的cookie,即用户已经登陆了sso系统了,就将sso系统中的ST返回给app2,这样就知道了,登陆app2的用户是app1了

至于跨域中服务端的ST,可以放在redis中,与用户名连成一个map,这样在验证服务端的ST是正确之后,可以返回用户名,直接登录app系统。

sso单点登录系统的理解相关推荐

  1. SpringBoot+MyBatis+Redis实现SSO单点登录系统(二)

    SpringBoot+MyBatis+Redis实现SSO单点登录系统(二) 三.代码 配置文件配置数据库,redis等相关的信息. # See http://docs.spring.io/sprin ...

  2. SpringBoot+MyBatis+Redis实现SSO单点登录系统(一)

    SpringBoot+MyBatis+Redis实现SSO单点登录系统(一) 一.SSO系统概述 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可 ...

  3. sso单点登录系统(解决session共享)

    场景:假设一个用户将自己的登录信息提交到后台,如果session保存的信息分布在多台机器上,并且不共享,那么可能导致用户的登录信息出现短暂的丢失,为什么这样讲,因为用户访问服务器中间还要经过负载均衡服 ...

  4. 互联网分布式微服务云平台规划分析--SSO单点登录系统

    介绍 鸿鹄云架构[SSO单点登录系统]为所有微服务提供统一的用户认证服务,系统本身属于微服务模式,使用JWT+Redis分布式存储方案,确保不同微服务.系统之间的安全通讯和统一用户校验.认证.在整个服 ...

  5. Shiro整合SSO单点登录系统

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37797991/article/ ...

  6. 手撕一套sso(单点登录)系统之原理篇1

    在手撕之前,你首先要了解一些原理,我写的案例成品可以访问zauth,语言是Java8. 目录 1.关于Http 2.用户信息怎么存?存什么?存在哪? 2.1 使用前端存储技术Storage或index ...

  7. SSO单点登录系统的实战运用

    通用介绍 单点登录系统,简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.任何SSO框架都需要创建统一的认 ...

  8. 基于cookie的SSO单点登录系统

    利用COOKIE实现单点登录功能 近期公司要求帮一个项目实现单点登录功能,在综合考量下决定采用cookie实现,大概的流程如下图所: 转载于:https://www.cnblogs.com/bugge ...

  9. SSO单点登录系统搭建(附源码)

最新文章

  1. angularjs 学习笔记 简单基础
  2. 使用 Blender* 重新拓扑 VR 和游戏素材
  3. SQL Server ALwayson 正在解析
  4. 原生 遍历_前端原生写js代码还是用vue等框架写项目?
  5. Protobuf介绍及简单使用(下)之文件读写
  6. 做32跟做linux哪个挣钱,想做年薪20万招聘人才,先看会不会这28个Linux运维岗经典面试题...
  7. Oracle的order by关键字
  8. 为什么滴滴天猫都玩上了大数据“杀熟”的套路?
  9. linux下的c语言编程实验4,实验四-Linux下的C语言编程
  10. asp.net在ie7中使用FileUpload上传前预览图片
  11. php Excel报表,Excel报表生成的方案 PHPExcel
  12. BRVAH官方使用指南(持续更新)
  13. 网页编程----HTML网页编程
  14. python高级特性的学习
  15. Mail企业邮箱登录入口在哪里?如何注册企业邮箱账号?
  16. 计算机网络举例说明,什么是计算机网络,举例说明计算机网络有哪些应用?
  17. 游戏美术设计之整体世界的画法-张聪-专题视频课程
  18. PPTP 配置PNS 的基本
  19. php随机小数_php lcg_value与mt_rand生成0~1随机小数的效果对比分析
  20. 十进制转二进制(C++)

热门文章

  1. pythonturtle怎么画曲线_『怎么用python中的turtle画希尔伯特曲线』python画曲线图教程...
  2. 2022SZ少儿时尚周收官!6场品牌大秀接轨国际潮流
  3. Iaas-cloudstack概念
  4. 原来iPhone手机这么好用!点2下屏幕就能长截屏,实用又方便
  5. 如何网上查询国管住房公积金
  6. PHPword表格中输出不同字体的汉子
  7. 算法设计与分析----循环赛日程表
  8. JSD-2204-面向对象-方法重写-潜艇游戏--Day10
  9. Linux系统内存知识总结
  10. java定义猴子类的题_【视频+图文】Java经典基础练习题(六):猴子吃桃子问题...