一文介绍使用 JIT 认证后实时同步用户更加优雅
首先本次说的 JIT 指的是 Just In Time ,可以理解为及时录入,一般用在什么样的场景呢?
还记的上次我们说过关于第三方组织结构同步的功能实现,主要目的是将第三方源数据同步到内部平台中来,方便做管控和处理
此处的管控有一部分是为了做用户身份认证
此处内部平台和第三方 IDaaS 进行对接,一般会使用 OAuth2.0 协议完成具体的实现,关于 OAuth2.0 协议一般有如下几种方式:
- 授权码
- 隐藏式
- 密码式
- 客户端凭证
自然,关于身份认证相关的细节内容,不在本次文章中展现,在后续的文章中再来详细阐述,本次文章中 ,重点还是要来聊聊 JIT 是怎么去实现的🔥🔥
接下来分别聊聊关于如下两种用户录入到内部平台的流程
- 先同步用户,再认证
- 直接使用 JIT 方式认证后录入用户
🧐先同步用户,再认证
不知做过身份认证或者处理过第三方组织结构同步的同学是否会有同感
最初做基本第三方用户身份认证的时候,是否会有这么一个执念,一定是需要先将第三方用户的数据同步到内部平台中来,再进行认证,毕竟用户都不在平台中,我内部平台如何去对用户做基本的校验和管控???
确实如此,人的想法会产生感觉,感觉会产生行为,行为会产生结果,自然而然的认为这么处理是理所当然的,因此就有了如下这样的实现方式
首先认证是很多系统的第一道关卡,有的系统是自身来实现认证,例如会提供一些账号密码认证,短信认证,验证码认证等等
但是对于这种第三方平台同步过来的用户,一般会使用 单点登录 的方式来进行处理
- 简单来说咱们的内部平台就是第三方 IDaaS 的一个应用
- 用户需要登录咱们内部系统,需要先去经过第三方IDaaS 的认证,第三方 IDaaS 会将认证结果凭证给到我们内部平台
- 内部平台和 IDaaS 通信后,完成基本的鉴权后,内部平台即相信了这个用户的身份,则认证通过
此处简单说明一下单点登录
单点登录 翻译过来是 Single Sign On,简称就是SSO
作用是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。
关于认证方面的内容,后续详细聊聊
先同步用户再认证流程如下
- 先将第三方平台的用户数据同步到内部平台中
- 用户触发认证后,第三方平台回调内部平台的 redirect_uri ,传入基本的登陆吗和其他防篡改信息
- 内部平台通过登录码以及其他必要信息与第三方平台交互,拿到具体的登录用户详情
- 内部平台校验该用户是否可以通过本平台的校验,若校验不通过,则认证失败
- 用户认证通过,可以访问认证后的一些系统
这种方式乍一看好像没有什么问题,实际对于租户(一个租户可以理解为一家公司,用户则是公司的员工)实际运作起来,还是会带来一些麻烦,用起来还是不够爽,认证前一定要先同步数据,很多租户是不愿意这样做的
✔举例时刻
譬如说,一个伟大的公司有 1万个员工,需要使用我们内部平台的产品,则这公司员工必然是需要经过我们内部平台的身份认证才可以使用我们产品提供的服务
可是这家公司习惯使用钉钉或者企业微信来进行管理自己的员工,用户不期望自己用手将员工信息录入到我们内部平台👀👀
这个时候便提出了第三方组织结构同步,即让 IDaaS 去对接例如钉钉或者企业微信,最终数据同步到我们内部平台
因此,我们就可以使用 单点登录 来进行用户身份认证了
简单来说,用户找我们内部平台进行认证,实际上是跳转到具体的钉钉或者企业微信去做实际认证,只不过认证结果最终会给到我们内部平台,我们内部平台去做基本校验即可
看到此处,是否会有小伙伴有疑问,直接将第三方平台的用户密码也同步过来不就好吗? 这样就可以自己内部平台去校验账号密码了
兄弟,要知道,第三方平台的用户密码是属于用户隐私,是不会暴露出去的,而且在 A 平台认证,使用 B 平台的密码,这不合理哦
🧐🧐🧐这个时候,这个伟大的公司来了一批新人,这批新人也需要用上我们的内部产品,这个时候还需要管理员去操作一次用户同步才行
如果新员工是断断续续的来,那么管理员都要去操作同样的同步用户操作,公司管理员的管理成本一下子就提高了不少,对于公司管理员来说是不合理的,这个产品还不太行
貌似解决了我的一部分问题,但是好像又没有全部解决,要是有更好的产品,我自然第一时间会进行替换😥😥😥
🧐🧐直接使用 JIT 方式认证后录入用户
只要思想不滑坡,办法总比困难多
一般自己的产品如果不是被自己优化迭代,那么就是被竞争者颠覆,自我更新迭代尤其重要
针对以上问题,我们提出了 JIT 的方式,让用户无需全部同步组织结构,而是经过认证后,即可录入到平台
这样即减少了 管理员 不必要的麻烦,还让用户认证变得简单,最重要的是让用户认证和用户同步得到真实的解耦,不再相爱相杀,相互影响😃😃
上面说过 JIT 即 Just In TIme ,通过翻译则能感受到他的作用,实时录入,正是时候,这个功能做上去,对于客户来说,确实正是时候
JIT 的基本实现也很简单明了,流程如下
- 用户触发认证,经过第三方平台认证后,内部平台校验认证信息,拿到具体用户详情
- 内部平台校验该用户是否存在于平台中,若存在,则正常进行认证后的逻辑
- 若用户不存在于平台中,则将用户的组添加到平台中,将该用户添加到平台中,再走认证后的逻辑
可以查看,仅仅是在认证流程中做了一些微调,即可让客户管理员轻松许多,使用了这个产品,管理成本也大幅降低,效率大幅提升
做产品,做开发,如果能够看得更远,站在用户的角度去看,可能你会看到更多的需求和问题
希望我们都能拥有用户思维
本篇文章如果对你能够带来一点思考和帮助的话,还请留下你的足迹,欢迎讨论,不足之处,还请不吝赐教
感谢阅读,欢迎交流,点个赞,关注一波 再走吧
欢迎点赞,关注,收藏
朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力
好了,本次就到这里
技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。
我是阿兵云原生,欢迎点赞关注收藏,下次见~
文中提到的技术点,感兴趣的可以查看这些文章:
- 【性能优化下】组织结构同步优化二,全量同步/增量同步,断点续传实现方式
- 【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?
- 坑爹,线上同步近 3w 个用户导致链路阻塞引入发的线上问题,你经历过吗?
- OAUTH之钉钉第三方授权
可以进入地址进行体验和学习:https://xxetb.xet.tech/s/3lucCI
相关文章:

一文介绍使用 JIT 认证后实时同步用户更加优雅
首先本次说的 JIT 指的是 Just In Time ,可以理解为及时录入,一般用在什么样的场景呢? 还记的上次我们说过关于第三方组织结构同步的功能实现,主要目的是将第三方源数据同步到内部平台中来,方便做管控和处理 此处的管…...

搞定“项目八怪”,你就是管理高手!
大家好,我是老原。 玛丽.弗列特说:“权力已经逐渐被视为一个群体的组合能力。我们通过有效联系获取力量。” 有效联系也就是指的沟通,这个部分占据我们项目经理工作内容的80%,可见沟通在项目管理中的重要性。 项目经理的沟通包…...

机器视觉-标定篇
3D结构光标定 结构光视觉的优点: 非接触、信息量大、测精度高、抗干扰能力强。 结构光视觉传感器参数的标定包括:摄像机参数标定、结构光平面参数标定。 结构光视觉测量原理图 我们不考虑镜头的畸变,将相机的成像模型简化为小孔成像模型…...

linux离线安装make
一、下载rpm包 https://pkgs.org/search/?qmake 二、拷贝至服务器 三、安装make rpm -ivh make-3.82-24.el7.x86_64.rpm四、查看是否安装成功 make -v...

【深度学习】卷积神经网络(LeNet)【文章重新修改中】
卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码…...

win10 Baichuan2-7B-Chat-4bits 上部署 百川2-7B-对话模型-4bits量化版
搞了两天才搞清楚跑通 好难呢,个人电脑 win10 ,6GB显存 个人感觉 生成速度很慢,数学能力不怎么行 没有ChatGLM2-6B 强,逻辑还行, 要求: 我的部署流程 1.下载模型 ,下载所有文件 然后 放到新建的model目录 https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat-4bits/tr…...

2023/9/20总结
maven maven本质是 一个项目管理工具 将项目开发 和 管理过程 抽象成 一个项目对象模型(POM) POM (Project Object Model) 项目对象模型 作用 项目构建 提供标准的自动化 项目构建 方式依赖管理 方便快捷的管理项目依赖的资源…...
【Git】git 分支或指定文件回退到指定版本
目录 一、分支回滚 1. 使用 git reset 命令 2.使用 git revert 命令 3.使用 git checkout 命令 二、某个文件回滚 1.查看哪些文件发生修改 2.然后查看提交记录(最近几次提交) 3.执行提交命令 一、分支回滚 1. 使用 git reset 命令 命令可以将当前分支的 HEAD 指针指向指…...

Java 消息策略的实现 - Kafak 是怎么设计的
这个也是开放讨论题,主要讨论下 Kafka 在消息中是如何进行实现的。 1_cCyPNzf95ygMFUgsrleHtw976506 21.4 KB 总结 这个题目的开发性太强了。 Kafka 可以用的地方非常多,我经历过的项目有 Kafka 用在消息处理策略上的。这个主要是 IoT 项目,…...

c++opencv RotatedRect 旋转矩形角度转换和顶点顺序转换
这里写自定义目录标题 以下代码记录主要是完成轮廓点求解最小外接矩形之后计算该文本行的角度和旋转矩形的左下(bl),左上(tl),右上(tr),右下(br)的坐标点。 RotatedRect rtminAreaRect(contours…...

Flink-CDC 抽取SQLServer问题总结
Flink-CDC 抽取SQLServer问题总结 背景 flink-cdc 抽取数据到kafka 中,使用flink-sql进行开发,相关问题总结flink-cdc 配置SQLServer cdc参数 1.创建CDC 使用的角色, 并授权给其查询待采集数据数据库 -- a.创建角色 create role flink_role;-- b.授权…...

Linux 系统目录结构 终端
系统目录结构 Linux 或 Unix 操作系统中,所有文件和目录呈一个以根节点为始的倒置的树状结构。文件系统的最顶层是根目录,用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此…...

Layui + Flask | 实现注册、登录功能(案例篇)(08)
此案例内容比较多,建议滑到最后点击阅读原文,阅读体验更佳。后续也会录制案例视频,将在本周内上传到同名的 b 站账号。 已经看了 layui 表单相关的知识,接下来就可以实现注册功能,功能逻辑如下: 项目创建 新建 flask 项目下载 layui 文件,解压之后复制到指定文件编写前…...
GitLab数据迁移后出现500错误
一、背景 去年做GitLab数据迁移时,写过一篇文章《GitLab的备份与还原》。后来发现新创建的项目没问题,但对于迁移过来的项目,修改名称等信息,或者删除该项目时,会出现500错误,以为是系统问题&#…...

音乐随行,公网畅享,群辉Audiostation给你带来听歌新体验!
文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…...

机器学习入门:从算法到实际应用
机器学习入门:从算法到实际应用 机器学习入门:从算法到实际应用摘要引言机器学习基础1. 什么是机器学习?2. 监督学习 vs. 无监督学习 机器学习算法3. 线性回归4. 决策树和随机森林 数据准备和模型训练5. 数据预处理6. 模型训练与调优 实际应用…...

【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解
一,何为SPA SPA(Single Page Application)是一种 Web 应用程序的开发模式,它通过使用 AJAX 技术从服务器异步加载数据,动态地更新页面内容,实现在同一个页面内切换不同的视图,而无需整页刷新 1.…...

Node.js 调用 fluent-ffmpeg
最近开发H5资源在线裁剪,最终在资源合成的步骤,选择 ffmpeg 作为合成的插件,记录下使用方式。 一、介绍 ffmpeg 一款跨平台多媒体处理工具,可以进行视频转码、裁剪、合成、音视频提取、推流等操作。 二、安装 Node js 可以利用…...
scrapy框架--
Scrapy是一个用于爬取数据的Python框架。下面是Scrapy框架的基本操作步骤: 安装Scrapy:首先,确保你已经安装好了Python和pip。然后,在命令行中运行以下命令安装Scrapy:pip install scrapy 创建Scrapy项目:…...
算法通关村第十五关——从40亿个数中产生一个不存在的数的处理方法
1.从40个亿中产生一个不存在的整数 题目要求:给定一个输入文件,包含40亿个非负整数,请设计一个算法,产生一个不存在该文件中的整数,假设你有1GB的内存来完成这项任务。**** 解题中心思想:存储的不是这40亿…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...