【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

图文并茂,为你揭开“单点登录“的神秘面纱

  • 2021-03-12
  • 本文字数:1806 字

    阅读完需:约 6 分钟

图文并茂,为你揭开“单点登录“的神秘面纱

概念


单点登录( Single Sign On ,简称 SSO),是目前比较流行的企业业务整合的解决方案之一,用于多个应用系统间,用户只需要登录一次就可以访问所有相互信任的应用系统。


前置介绍


  1. 同源策略 限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互,要求协议,端口和主机都相同。

  2. HTTP 用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是无状态协议,所以服务器单从网络连接上无从知道客户身份。那要如何才能识别客户端呢?给每个客户端颁发一个通行证,每次访问时都要求带上通行证,这样服务器就可以根据通行证识别客户了。最常见的方案就是 Cookie。

  3. Cookie 是客户端保存用户信息的一种机制,保存在客户机硬盘上。可以由服务器响应报文Set-Cookie的首部字段信息或者客户端 document.cookie来设置,并随着每次请求发送到服务器。子域名可以获取父级域名 Cookie。

  4. Session 其实是一个抽象概念,用于跟踪会话,识别多次 HTTP 请求来自同一个客户端。Cookie 只是通用性较好的一种实现方案,通常是设置一个名为 SessionID(名称可自定义,便于描述,本文均使用此名称)的 Cookie,每次请求时携带该 Cookie,后台服务即可依赖此 SessionID 值识别客户端。


单系统登录


在介绍单点登录之前,我们先来了解一下在浏览器中,访问一个需要登录的应用时主要发生的一系列流程,如下图所示:



以下为连环画形式,期望能让读者更好的理解:








依赖于登录后设置的 Cookie,之后每次访问时都会携带该 Cookie,从而让后台服务能识别当前登录用户。


题外话

后台是如何通过 SessionID 知道是哪个用户呢?

  1. 数据库存储关联:将 SessionID 与数据信息关联,存储在 Redis、Mysql 等数据库中;

  2. 数据加密直接存储:比如 JWT 方式,用户数据直接从 SessionID 值解密出来(此方式时 Cookie 名称以 Token 居多)。


多系统登录问题


同域名


当访问同域名下的页面时,Cookie 和单系统登录时一样,会正常携带,后台服务即可直接获取到对应的 SessionID 值,后台为单服务还是多服务无差别。


不同子域名


子域名间 Cookie 是不共享的,但各子域名均可获取到父级域名的 Cookie,即 app.demo.com与 news.demo.com均可以获取 demo.com域名下的 Cookie。所以可以通过将 Cookie 设置在父级域名上,可以达到子域名共享的效果,即当用户在 app.demo.com 域名下登录时,在demo.com域名下设置名为 SessionID 的 Cookie,当用户之后访问news.demo.com时,后台服务也可以获取到该 SessionID,从而识别用户。


完全不同域名


默认情况下,不同域名是无法直接共享 Cookie 的。


前端跨域带 Cookie


如果只是期望异步请求时获取当前用户的登录态,可以通过发送跨域请求到已经登录过的域名,并配置属性:


xhrFields: {  withCredentials: true}
复制代码


这样可在请求时携带目标域名的 Cookie,目标域名的服务即可识别当前用户。


但是,这要求目标域名的接口支持 CORS 访问(出于安全考虑,CORS 开启 withCredentials 时,浏览器不支持使用通配符*,需明确设置可跨域访问的域名名单)。


题外话

如果只是为了规避浏览器的限制,实现与通配*同样的效果,到达所有域名都可以访问的目的,可根据访问的 Referrer 解析请求来源域名,作为可访问名单。但是出于安全考虑,不推荐使用,请设置明确的可访问域名。


CAS


CAS(Central Authentication Service),即中央认证服务,是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法。


既然不能跨域获取,那 CAS 如何做到共享呢?它通过跳转中间域名的方式来实现登录。


页面访问流程如下图:



以下为连环画形式,期望能让读者更好的理解:





















其中需要关注以下 2 点:


  1. 所有的登录过程都依赖于 CAS 服务,包含用户登录页面、ST 生成、验证;

  2. 为了保证 ST 的安全性,一般 ST 都是随机生成的,没有规律性。CAS 规定 ST 只能保留一定的时间,之后 CAS 服务会让它失效,而且,CAS 协议规定 ST 只能使用一次,无论 ST 验证是否成功,CAS 服务都会清除服务端缓存中的该 ST,从而规避同一个 ST 被使用两次或被窃取的风险。


扩展阅读


其他相关的内容,也可以进行简单了解,如:单点登录退出 SLOOAuth2


参考文档


浏览器的同源策略

CAS 协议



头图:Unsplash

作者:余诺

原文:https://mp.weixin.qq.com/s/_AJf3B-HezUgtSh8gprKLw

原文:图文并茂,为你揭开“单点登录“的神秘面纱

来源:政采云前端团队 - 微信公众号 [ID:Zoo-Team]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021-03-12 23:064653

评论

发布
暂无评论
发现更多内容

RAG落地实践、AI游戏开发、上海·深圳·广州线下工坊启动!星河社区重磅周

飞桨PaddlePaddle

人工智能 开发者 星河社区

优秀的文件传输软件能有效提高公司效率

镭速

文件传输软件

如何理解点到点传输,如果加速点到点传输速度

镭速

点对点传输

Lazada商品详情接口在电商行业中的重要性及实时数据获取实现

Noah

mac电脑图片查看推荐:EdgeView 4中文激活版最新

mac大玩家j

Mac软件 图片查看工具 图片查看软件

使用Slurm集群进行分布式图计算:对Github网络影响力的系统分析

华为云开发者联盟

开发 华为云 华为云开发者联盟 华为云弹性云服务器

以战略规划为导向的企业全面预算管理应用

智达方通

战略规划 全面预算管理

把数据变多、变大、变漂亮的四大有效方式

秃头小帅oi

Perfectly Clear Workbench for mac(图像清晰处理软件) 4.6.0.2620永久激活版

mac

图像处理软件 苹果mac Windows软件 Perfectly Clear

OpenAI成长史,凭什么快速崛起?特殊股权设计带来哪些影响?

博文视点Broadview

c++类 | AI工程化部署

AIWeker

c AI工程化部署

【写作训练营打卡|01】

写作

并发情况如何实现加锁来保证数据一致性? | 京东云技术团队

京东科技开发者

数据库 分布式锁 数据一致性 ReentrantLock

文件夹快速比较工具 DirEqual 激活最新版

胖墩儿不胖y

Mac软件 文件夹管理工具 Mac文件夹比较

Quartz核心原理之架构及基本元素介绍 | 京东物流技术团队

京东科技开发者

Java 框架 quartz Job

亮点抢先看|2023开放原子开发者大会期待您的参与!

开放原子开源基金会

Java 开源 程序员 算法 开发者大会

向“创新者”升阶,程序员当下如何应对 AI 的挑战 | 京东云技术团队

京东科技开发者

人工智能 程序员 AI 大模型

再也不怕面试官问Redis持久化了

程序员花卷

缓存 后端 写时复制 redis 底层原理

连夜整理的6个开源项目,都很实用

伤感汤姆布利柏

开源 低代码 开发

​HTML代码混淆技术:原理、应用和实现方法详解

手把手实践分享:如何做到1天开发一个教育类App!

Geek_2305a8

Mac版VMware Fusion Pro激活中文包

胖墩儿不胖y

Mac软件 VM虚拟机 虚拟机软件

亚信安慧AntDB受邀分享核心业务系统全域数据库替换实践

亚信AntDB数据库

数据库 AntDB AntDB数据库

赣锋锂业搭载“工业互联”加速度,探寻万吨锂盐工厂的“智造”蝶变之路

用友BIP

智能制造

IDC 中国数字化转型盛典:兴业银行「基于悦数图数据库」的「智能大数据云平台」获奖

悦数图数据库

大数据 云平台 图数据库 智能大数据云平台

数智化驱动建企人才管理创新

用友BIP

人才管理

Native API在HarmonyOS应用工程中的使用指导

HarmonyOS开发者

HarmonyOS

日均搜索 3 亿次,小红书如何打造年轻人首选的「搜索引擎」

小红书技术REDtech

推荐系统 搜索 小红书 模拟器 SIGIR

钉钉员工组织资料实时同步至飞书的应用解析

RestCloud

自动化 钉钉 APPlink

实例讲解Python 解析JSON实现主机管理

华为云开发者联盟

Python json 开发 华为云 华为云开发者联盟

百度APP iOS端包体积50M优化实践(七)编译器优化

百度Geek说

编译器 百度app 12 月 PK 榜

图文并茂,为你揭开“单点登录“的神秘面纱_文化 & 方法_政采云前端团队_InfoQ精选文章