一文介绍使用 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亿…...
软件项目开发的流程及关键点
软件项目开发的流程及关键点 graph LR A[需求分析] --> B[系统设计] B --> C[编码开发] C --> D[测试验证] D --> E[部署上线] E --> F[运维支持]在项目开发的流程中,首先是进行需求分析,明确项目的目标和功能要求。接下来是系统设计&am…...
全球变暖问题(floodfill 处理联通块问题)
全球变暖问题 文章目录 全球变暖问题前言题目描述题目分析边界问题的考虑岛屿是否被淹没判断:如何寻找联通块: 代码预告 前言 之前我们介绍了 bfs算法在二维,三维地图中的应用,现在我们接续进行拓展,解锁floodfill 算…...
由于找不到vcruntime140_1.dll怎么修复,详细修复步骤分享
在使用电脑过程中,可能会遇到一些错误提示,其中之一是找不到vcruntime140_1.dll的问题。这使得许多用户感到困扰,不知道该如何解决这个问题。小编将详细介绍vcruntime140_1.dll的作用以及解决找不到该文件的方法,帮助你摆脱困境。…...
算法 三数之和-(双指针)
牛客网: BM54 题目: 数组中所有不重复的满足三数之和等于0的数,非递减形式。 思路: 数组不小于3。不重复非递减,需先排序。使用idx从0开始遍历到n-2, 如果出现num[idx]num[idx-1]的情况,忽略继续下一个idx;令left idx1, right …...
AB实验总结
互联网有线上系统,可做严格的AB实验。传统行业很多是不能做AB实验的。 匹配侧是采用严格的AB实验来进行模型迭代,而精细化定价是不能通过AB实验来评估模型好坏,经历过合成控制法、双重差分法,目前采用双重差分法来进行效果评估。…...
sklearn包中对于分类问题,如何计算accuracy和roc_auc_score?
1. 基础条件 import numpy as np from sklearn import metricsy_true np.array([1, 7, 4, 6, 3]) y_prediction np.array([3, 7, 4, 6, 3])2. accuracy_score计算 acc metrics.accuracy_score(y_true, y_prediction)这个没问题 3. roc_auc_score计算 The binary and mul…...
python温度转换程序
1.使用pycharm运行温度转换程序,尝试将温度单位设在前面 2.参照温度转换程序,自己写一个关于货币转换、长度转换、重量转换或者面积转换的程序 循环函数 def convertemperature():temperature ""while (temperature ! "q"):temperature in…...
Vue2中10种组件通信方式和实践技巧
目录 1,props / $emit1.1,一个需求方法1方法2 1.2,v-model 和 .syncv-model.sync 2,$children / $parent3,ref4,$attrs / $listeners$attrs$listenersinheritAttrs1.1 的问题的第3种解决方法 5,…...
Flutter flutter.minSdkVersion的实际文件位置
Flutter 项目的Android相关版本号配置: flutter.minSdkVersion 的版本号配置文件实际路径: …/flutter_sdk/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy Flutter版本号如下: bzbMacBook-Pro ccsmec % flutter --version …...
python生成PDF报告
前言 最近接到了一个需求-将项目下的样本信息汇总并以PDF的形式展示出来,第一次接到这种PDF的操作的功能,还是有点慌的,还好找到了reportlab这个包,可以定制化向PDF写内容! 让我们由简入深进行讲解 一、reportlab是…...
在线制作插画网站/网站有吗免费的
前几天找资料的时候,看到了一个开源IP,对于音视频编解码的人还是比较有用的,这里先看下它的简介: 简介 H.265 Video Encoder IP Core 是开源的H.265硬件视频编码器,实现了H.265(或叫HEVC)的大部…...
国外wordpress cms主题/人民日报评网络暴力
1.计算机病毒的结构主要包括()模块。 A.传染 B.触发 C.破坏 D.复制 2.与专用会计核算软件相比较,通用会计核算软件的优点有()。 A.成本相对较低 B.维护量小且维护有保障 C.开发者决定系统的扩充与修改 D.软件开发水…...
东莞网站建设_东莞网页设计/自己如何注册网站
B2C(Business to Customer)。B2C中的B是Business,意思是企业,2则是to的谐音,C是Customer,意思是消费者,所以B2C是企业对消费者的电子商务模式。这种形式的电子商务一般以网络零售业为主,主要借助于Internet…...
图片站 wordpress/免费发布广告
吃饭的时候,身边的一个喊了一句:“来屉笼包”。 第一次听到这样的叫法,很新奇。 最初的叫法是:“来一笼包子”, 这里“笼”是量词; 而包子,有大有小, 用小笼子蒸出来的包子ÿ…...
wordpress入门教程(视频)/百度推广外推联系方式
AVR c语言优秀编程风格作为一个初学者如何具有良好的程序设计风格呢?我想引用一个关于初学者请教编程大师的故事让读者自己去领悟。有一位编程大师,他写非结构化的程序,一位初学者刻意模仿他,也写非结构化的程序。当他让大师看他的…...
网站产品二级分类/百度网站排名怎么提高
代码来源https://www.shiyanlou.com/courses/552,对它进行理解,注释 #-*- coding:utf-8 -*- import BaseHTTPServerclass RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):处理请求并返回页面# 页面模板Page \<html><body><p>…...