单点登录深入详解之设计方案总结

基于cookie的单点登录解决方案

概述

用户登录之后 , 将认证信息存储至 Cookie ,当再次访问本服务或者访问其他应用服务时,直接从
Cookie 中传递认证信息,进行鉴权处理。

问题

1. 如何保障Cookie内用户认证信息的安全性?

  • 第一, Cookie内不能存放用户名和密码等敏感信息, 可以生成一串Token进行替代;
  • 第二, 通过加密方式存储Cookie信息,并且采用https加密方式传输,设定Cookie有效期,在 服务端设定Token的有效期,避免攻击者伪造用户身份。

2. 如何解决跨域问题?

在实际应用中, 经常会存在各种服务需要鉴权处理, 但受浏览器同源策略限制,无法去正常
操作 Cookie 数据 , 解决方式有两种 :
  • 第一种,采用iframe方式解决跨域问题, 实现Cookie共享,但要注意,父窗口获取子窗口在跨域下可以正常获取,子窗口后去父窗口仍会存在跨域问题,这点在实现的时候要注意。
  • 第二种,采用JSONP方式实现跨域传输,这需要在服务端设置允许跨域请求, response.setHeader("Access-Control-Allow-Origin", "*"); 设置允许任何域名跨域访问,服务端返回数据时,再设置callback,才能完成跨域请求。

设计方案架构图

这里以淘宝SSO的架构为例

基于分布式Session的单点登录解决方案

概述

大型应用服务无论是整体拆分,还是集群部署,都会涉及到统一会话问题,
  • 如何保障各服务节点都能够统一有效鉴权?
  • 某个服务节点宕机,重启后如何恢复登录状态?
  • Cookie禁用的情况下如何实现SSO?
由此产生了分布式 Session 设计方案。 分布式 Session 方案,实质是通过自定义的Session机制来处理用户的登录鉴权信息,实现单点登录。

实现流程

常用技术框架

Spring Session :
        它是目前主流的 Session 管理解决方案, Spring Session 并非特定应用于HTTP, 它是一种广义的分布式统一Session ,支持 WebSocket WebSession 等,并且可以基于Redis、 MongoDB 等多种高性能缓存来实现。
XXL-SSO :
        它是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有” 轻量级、分布式、跨域、 Cookie+Token 均支持、 Web+APP 均支持 等特性。现已开放源代码,开箱即用。架构图:

基于客户端令牌Token的单点登录解决方案

概述

根据客户端身份信息由认证服务生成签名令牌,令牌中会包含基本的用户信息,客户端在请求资源
服务时会附带令牌,资源服务根据加密协议在本地进行验证,或者发送给认证服务端进行校验。它可以解决分布式会话的安全性问题,比如会话劫持,同时不需要集中统一维护session ,能够做到无状态化处理。OAuth2 JWT 都是基于令牌 Token 实现的认证方案。

适用场景

JWT (JSON Web Token) 是一个开放安全的行业标准 , 用于多个系统之间传递安全可靠的信息。它由三部分组成,头部(Header)、载荷 (playload)与签名(Signature)
Token 实质是一个无意义的UUID,需要服务端做记录与认证。
但JWT 则赋予了用户的身份信息,可以采用自定义算法进行加密与解密,直接实现信息的传输交换。
那具体适用于哪些场景?
  • 可以适用于微服务应用,无论是内部服务节点的认证与授权,或是令牌与API网关结合的认证。
  • 可以适用于开放式的API接口访问,比如前后分离API对接,第三方API接口对接等。

实现流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSONArray 与Object 之间的转换

PageResult<JSONArray> pageResult new PageResult<>();// 查出来的数据 JSONArray resultArray new JSONArray(); ject data new JSONObject();data.put("code", code); resultArray.add(data);// 将resultArray数据放入JSONArray,不是再包装成一个 …

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版&#xff0c;不用申请。目前版本&#xff1a;0.53.13 &#xff0c;选择不同平台压缩包下载解压到任意位置即可 补充下载&#xff0c;vscode插件解压后&#xff0c;在vscode扩展中选择从vsix安装&#xff0c;安装后新增名为…

SmartSQL:一款方便、快捷的数据库文档查询、导出工具

&#x1f6a9; 项目介绍 SmartSQL 是一款方便、快捷的数据库文档查询、导出工具&#xff01;从最初仅支持SqlServer数据库、CHM文档格式开始&#xff0c;通过不断地探索开发、集思广益和不断改进&#xff0c;又陆续支持Word、Excel、PDF、Html、Xml、Json、MarkDown等文档格式…

IT监控 | Oracle云监控全解析

Oracle云(Oracle Cloud)是Oracle公司提供的云服务平台&#xff0c;涵盖了IaaS、PaaS、SaaS和DaaS&#xff0c;支持企业在云中构建、部署、集成和扩展应用&#xff0c;为企业提供了管理服务器、应用程序、存储、网络和数据中心的全面控制能力。 跟踪Oracle云基础设施的关键组件将…

攻防世界-web ics-06 [解法思路]

进入环境 点击左边的列表只有报表中心有反应 注意看url直接就是index.php?id1 我先试了sqlmap不行&#xff0c;然后就沉淀了一下 想到了id后面的参数问题&#xff0c;我谁便改了几个数都没反应 就想着用bp抓包爆一下这个参数&#xff0c;用了一个数字10000的字典 发现2333…

zotero安卓测试版下载和使用

2023年年底&#xff0c;Zotero官方就已经推出了安卓版的测试版Zotero for Android (beta),&#xff0c;但名额有限且只能通过Google商店下载。此外&#xff0c;还有一些第三方开发的安卓应用&#xff0c;如Zoo for Zotero、ZotDroid等。 在首次使用Zotero安卓版时&#xff0c;用…

洛谷 P1722 矩阵 II C语言 记忆化搜索

题目&#xff1a; https://www.luogu.com.cn/problem/P1722 我们按照案例画一下 我们会发现&#xff0c;会出现重复的子结构。 代码如下&#xff1a; #include<iostream> using namespace std; int mem[300][300]; int n; int f[305][305]; int dfs(int x,int red,…

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

微控制器 (MCU) 的时钟系统是系统运行的核心&#xff0c;它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例&#xff0c;详细讲解其 时钟树结构&#xff08;Clock Tree&#xff09;。通过理解时钟源、分配与预分频器设置&#xff0c;可以灵活配置系统时钟以实现高性…

[HarmonyOS] 解决HMRouter路由地址无法抽取的问题

解决HMRouter路由地址无法抽取的问题 背景 最近开始学习HarmonyOS开发&#xff0c;搭建项目的时候采用了 HMRouter 路由框架&#xff0c;在项目里使用到路由跳转&#xff0c;官方链接在这&#xff1a; https://gitee.com/hadss/hmrouter/blob/master/HMRouterLibrary/README…

转录组数据挖掘(生物技能树)(第11节)下游分析

转录组数据挖掘&#xff08;生物技能树&#xff09;&#xff08;第11节&#xff09; 文章目录 R语言复习转录组数据差异分析差异分析的输入数据操作过程示例一&#xff1a;示例二&#xff1a;示例三&#xff1a;此代码只适用于人的样本 R语言复习 #### 读取 ####dat read.deli…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归&#xff0c;逻辑回归&#xff08;线性回归sigmoid&#xff09;&#xff0c;神经网络 linear regression &#xff0c; logistic regression &#xff0c; neutral network 里面的偏导的相量有几百万维&#xff0c;这就是neutral network的不同&#xff0c;他是…

WonderJourney 学习笔记

目录 原理 所有场景的参数&#xff1a; 原理 Pytorch3D&#xff1a;用于高性能的3D渲染&#xff0c;确保生成的场景具有高度的真实感和细节。GPT-4&#xff1a;通过生成场景描述&#xff0c;为每一帧提供丰富的背景故事和情感。MiDaS&#xff1a;用于深度估计&#xff0c;确…

一个vue项目如何运行在docker

将 Vue.js 应用程序通过 Docker 发布是一个非常常见的做法&#xff0c;它可以帮助你轻松地部署应用到不同的环境中。下面是一个简单的指南&#xff0c;介绍如何为 Vue.js 项目创建 Dockerfile 并进行构建和运行。 第一步&#xff1a;安装 Docker 确保你的开发机器上已经安装了…

[DL]深度学习_扩散模型正弦时间编码

1 扩散模型时间步嵌入 1.1 时间步正弦编码 在扩散模型按时间步 t 进行加噪去噪过程时&#xff0c;需要包括反映噪声水平的时间步长 t 作为噪声预测器的额外输入。但是最初与图像配套的时间步 t 是数字&#xff0c;需要将代表时间步 t 的数字编码为向量嵌入。嵌入时间向量的宽…

【超全】目标检测模型分类对比与综述:单阶段、双阶段、有无锚点、DETR、旋转框

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Llmcad: Fast and scalable on-device large language model inference

题目&#xff1a;Llmcad: Fast and scalable on-device large language model inference 发表于2023.09 链接&#xff1a;https://arxiv.org/pdf/2309.04255 声称是第一篇speculative decoding边缘设备的论文&#xff08;不一定是绝对的第一篇&#xff09;&#xff0c;不开源…

Edge浏览器保留数据,无损降级退回老版本+禁止更新教程(适用于Chrome)

3 个月前阿虚就已经写文章告警过大家&#xff0c;Chromium 内核的浏览器将在 127 以上版本开始限制仍在使用 Manifest V2 规范的扩展&#xff1a;https://mp.weixin.qq.com/s/v1gINxg5vMh86kdOOmqc6A 像是 IDM、油猴脚本管理器、uBblock 等扩展都会受到影响&#xff0c;后续将无…

人工智能零基础入门学习笔记

学习视频&#xff1a;人工智能零基础入门教程 文章目录 1.简介2.应用3.演进4.机器学习5.深度学习6.强化学习7.图像识别8.自然语言9.Python10.Python开发环境11.机器学习算法1.多元线性回归项自实战&#xff1a;糖尿病回归预测 2.逻辑回归3.Softmax回归项目实战&#xff1a;鸢尾…

Spring Boot 3 集成 Spring Security(3)数据管理

文章目录 准备工作新建项目引入MyBatis-Plus依赖创建表结构生成基础代码 逻辑实现application.yml配置SecurityConfig 配置自定义 UserDetailsService创建测试 启动测试 在前面的文章中我们介绍了 《Spring Boot 3 集成 Spring Security&#xff08;1&#xff09;认证》和 《…

Wireshark抓取HTTPS流量技巧

一、工具准备 首先安装wireshark工具&#xff0c;官方链接&#xff1a;Wireshark Go Deep 二、环境变量配置 TLS 加密的核心是会话密钥。这些密钥由客户端和服务器协商生成&#xff0c;用于对通信流量进行对称加密。如果能通过 SSL/TLS 日志文件&#xff08;例如包含密钥的…