【面试集锦】如何设计SSO方案?和OAuth有什么区别?
如何设计SSO方案?和OAuth有什么区别?
--楼兰带你聊最纯粹的Java
如果面试问你,你会做一个权限系统吗?那你肯定会说做过。不就是各种登录、验证吗。我做的第一个CRUD应用就是注册、登录。简单!但是,如果问你在工作中真的做过权限系统吗?其实很多人都只能默默摇摇头。因为在很多真实项目中,权限系统可能不是最复杂的,但一定是牵连最广的。因此往往大型项目中真正去做权限系统的,都只是非常核心的一小部分人。而如果你的应用越来越复杂,作为安全门户的权限系统也会随着变得更加复杂。各种方案层出不穷。比如, 把SSO和OAuth这两个聊的最多的名词放到一起,你真的分清楚吗?
一、SSO与OAuth
首先你要清楚, SSO和OAuth都是分布式场景下比较常见的权限认证方案。然后,这两个方案,在项目落地时,很多项目都会用SpringSecurity这一类的权限框架实现。所以,这两东西他们其实很像,但本质上,他们完全是两个不同的方案,解决不同的问题。
SSO是Single Sign-On,单点登录。主打的是统一。允许用户通过一次登录访问多个相互信任的系统,无需重复输入凭证。比如,你登录了淘宝后,访问天猫,自然也是登录的状态。而如果在淘宝退出登录后,访问天猫也同时退出登录了。
OAuth是Open Authorization,开放授权。主打的是开放。允许用户注册的一个账号,可以用来登录多个不同的平台。他们有很多本质的区别。比如,你可以用一个微信账号
相关文章:
【面试集锦】如何设计SSO方案?和OAuth有什么区别?
如何设计SSO方案?和OAuth有什么区别?--楼兰 带你聊最纯粹的Java 如果面试问你,你会做一个权限系统吗?那你肯定会说做过。不就是各种登录、验证吗。我做的第一个CRUD应用就是注册、登录。简单!但是,如果问你在工作中真的做过权限系统吗?其实很多人都只能默默摇摇头。因…...
Python 基于 OpenCV 的人脸识别上课考勤系统(附源码,部署教程)
博主介绍:✌2013crazy、10年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&a…...
vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本
vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本,它提供了运行基于 Visual C++ 编写的应用程序所需的库文件。许多 Windows 应用程序都依赖这些库来正常运行,特别是使用 Visual Studio 编译的程序。 用途和重要性: 运行时库:vcredist_x64.exe 安装…...
Tailwind CSS 的核心理念
实用优先(Utility-First) Tailwind CSS 的最核心理念是"实用优先"。这种方法颠覆了传统的 CSS 开发方式,不再编写自定义的类名和样式规则,而是通过组合预定义的工具类来构建界面。这种方式带来了以下优势: …...
集成学习(二):从理论到实战(附代码)
接上一篇续写《集成学习(一):从理论到实战(附代码)》 五、实用算法 5.1 随机森林 随机森林在数据集的各个子样本上拟合许多决策树分类器,并使用平均来提高预测精度和控制过拟合。每一个分类器拟合了一部分随机样本,…...
HTML 链接
HTML 链接 引言 HTML(超文本标记语言)是构建网页的基础,而链接是网页中不可或缺的元素。链接不仅能够连接到其他网页,还能实现网页内部内容的跳转。本文将详细介绍HTML链接的用法、属性以及如何实现链接的优化。 HTML链接的基本…...
【机器学习】数据预处理之scikit-learn的Scaler与自定义Scaler类进行数据归一化
scikit-learn的Scaler数据归一化 一、摘要二、训练数据集和测试数据集的归一化处理原则三、scikit-learn中的Scalar类及示例四、自定义StandardScaler类进行数据归一化处理五、小结 一、摘要 本文主要介绍了scikit-learn中Scaler的使用方法,特别强调了数据归一化在…...
android的第一个app项目(java版)
一.学习java重要概念 java的基本类型的语言方法和C语言很像,这都是我们要学的东西和学过的东西。那些基础东西,就不和大家讨论了,一起看一下java的一些知识架构。 1.封装 封装是面向对象编程中的一个核心概念,它涉及到将数据和操…...
上位机知识篇---SSHSCP密钥与密钥对
文章目录 前言第一部分:SCP(Secure Copy Protocol)功能使用方法1.从本地复制到远程主机2.从远程主机复制到本地3.复制整个目录4.指定端口5.压缩传输 第二部分:SSH(Secure Shell)功能使用方法1.远程登录2.指…...
智慧物流新引擎:ARM架构工控机在自动化生产线中的应用
工业自动化程度的不断提升,对高性能、低功耗和高可靠性的计算设备需求日益增长。ARM架构工控机因其独特的优势,在多个工业领域得到了广泛应用。本文将深入探讨ARM架构工控机的特点及其在具体工业场景中的应用。 ARM架构工控机的主要优势 高效能与低功耗…...
[MySQL]2-MySQL索引
目录 1.索引🌟 1.1索引结构 B树 B树 聚簇索引(一级索引)与非聚簇索引(二级索引) 回表操作 1.2索引碎片 清理索引碎片的方法 1.3索引匹配方式🌟 在数据列上使用函数或者计算会导致索引失效的原因 …...
DeepSeek冲击下,奥特曼刚刚给出对AGI的「三个观察」,包括成本速降
来源 | 机器之心 今天凌晨,OpenAI CEO 再次发布长文,重申自己对于 AGI 的三个观察。 核心观点如下: 1. 人工智能模型的智能大致等于用于训练和运行该模型的资源的对数。 2. 使用一定水平的人工智能的成本每 12 个月就会下降约 10 倍&#x…...
新数据结构(8)——包装类
基本数据类型(轻点) Java基本数据类型在内存中占用固定的大小,并且直接存储值,而不是对象的引用 整数类型 byte:8位,存储范围从-128到127 short:16位,存储范围从-32,768到32,767 …...
P5:使用pytorch实现运动鞋识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 我的环境 语言环境:python 3.7.12 编译器:pycharm 深度学习环境:tensorflow 2.7.0 数据:本地数据集-运动鞋 一…...
讲解下SpringBoot中MySql和MongoDB的配合使用
在Spring Boot中,MySQL和MongoDB可以配合使用,以充分发挥关系型数据库和非关系型数据库的优势。MySQL适合处理结构化数据,而MongoDB适合处理非结构化或半结构化数据。以下是如何在Spring Boot中同时使用MySQL和MongoDB的详细讲解。 1. 添加依…...
《手札·行业篇》开源Odoo MES系统与SKF Observer Phoenix API在化工行业的双向对接方案
一、项目背景 化工行业生产过程复杂,设备运行条件恶劣,对设备状态监测、生产数据采集和质量控制的要求极高。通过开源Odoo MES系统与SKF Observer Phoenix API的双向对接,可以实现设备状态的实时监测、生产数据的自动化采集以及质量数据的同步…...
数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)
按奇偶排序数组 https://leetcode.cn/problems/sort-array-by-parity/description/ 描述 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1 输入:n…...
【STM32】HAL库Host MSC读写外部U盘及FatFS文件系统的USB Disk模式
【STM32】HAL库Host MSC读写外部U盘及FatFS文件系统的USB Disk模式 在先前 分别介绍了FatFS文件系统和USB虚拟U盘MSC配置 前者通过MCU读写Flash建立文件系统 后者通过MSC连接电脑使其能够被操作 这两者可以合起来 就能够实现同时在MCU、USB中操作Flash的文件系统 【STM32】通过…...
docker nginx 配置文件详解
在平常的开发工作中,我们经常需要访问静态资源(图片、HTML页面等)、访问文件目录、部署项目时进行负载均衡等。那么我们就会使用到Nginx,nginx.conf 的配置至关重要。那么今天主要结合访问静态资源、负载均衡等总结下 nginx.conf …...
如何实现华为云+deepseek?
在华为云上实现跨账号迁移数据或部署DeepSeek模型,可以通过以下步骤完成: 跨账号数据迁移 创建委托:在源账号中创建一个委托(Agency),授予目标账号访问数据的权限。 复制镜像:在源账号中&…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
