一文介绍使用 JIT 认证后实时同步用户更加优雅

news2025/1/13 15:53:33

首先本次说的 JIT 指的是 Just In Time可以理解为及时录入,一般用在什么样的场景呢?

还记的上次我们说过关于第三方组织结构同步的功能实现,主要目的是将第三方源数据同步到内部平台中来,方便做管控和处理

此处的管控有一部分是为了做用户身份认证

此处内部平台和第三方 IDaaS 进行对接,一般会使用 OAuth2.0 协议完成具体的实现,关于 OAuth2.0 协议一般有如下几种方式:

  • 授权码
  • 隐藏式
  • 密码式
  • 客户端凭证

自然,关于身份认证相关的细节内容,不在本次文章中展现,在后续的文章中再来详细阐述,本次文章中 ,重点还是要来聊聊 JIT 是怎么去实现的🔥🔥

接下来分别聊聊关于如下两种用户录入到内部平台的流程

  • 先同步用户,再认证
  • 直接使用 JIT 方式认证后录入用户

🧐先同步用户,再认证

不知做过身份认证或者处理过第三方组织结构同步的同学是否会有同感

最初做基本第三方用户身份认证的时候,是否会有这么一个执念,一定是需要先将第三方用户的数据同步到内部平台中来,再进行认证,毕竟用户都不在平台中,我内部平台如何去对用户做基本的校验和管控???

确实如此,人的想法会产生感觉,感觉会产生行为,行为会产生结果,自然而然的认为这么处理是理所当然的,因此就有了如下这样的实现方式

首先认证是很多系统的第一道关卡,有的系统是自身来实现认证,例如会提供一些账号密码认证,短信认证,验证码认证等等

但是对于这种第三方平台同步过来的用户,一般会使用 单点登录 的方式来进行处理

  • 简单来说咱们的内部平台就是第三方 IDaaS 的一个应用
  • 用户需要登录咱们内部系统,需要先去经过第三方IDaaS 的认证,第三方 IDaaS 会将认证结果凭证给到我们内部平台
  • 内部平台和 IDaaS 通信后,完成基本的鉴权后,内部平台即相信了这个用户的身份,则认证通过

此处简单说明一下单点登录

单点登录 翻译过来是 Single Sign On,简称就是SSO

作用是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

关于认证方面的内容,后续详细聊聊

先同步用户再认证流程如下

  1. 先将第三方平台的用户数据同步到内部平台中
  1. 用户触发认证后,第三方平台回调内部平台的 redirect_uri ,传入基本的登陆吗和其他防篡改信息
  1. 内部平台通过登录码以及其他必要信息与第三方平台交互,拿到具体的登录用户详情
  1. 内部平台校验该用户是否可以通过本平台的校验,若校验不通过,则认证失败
  1. 用户认证通过,可以访问认证后的一些系统

这种方式乍一看好像没有什么问题,实际对于租户(一个租户可以理解为一家公司,用户则是公司的员工)实际运作起来,还是会带来一些麻烦,用起来还是不够爽,认证前一定要先同步数据,很多租户是不愿意这样做的

✔举例时刻

譬如说,一个伟大的公司有 1万个员工,需要使用我们内部平台的产品,则这公司员工必然是需要经过我们内部平台的身份认证才可以使用我们产品提供的服务

可是这家公司习惯使用钉钉或者企业微信来进行管理自己的员工,用户不期望自己用手将员工信息录入到我们内部平台👀👀

这个时候便提出了第三方组织结构同步,即让 IDaaS 去对接例如钉钉或者企业微信,最终数据同步到我们内部平台

因此,我们就可以使用 单点登录 来进行用户身份认证了

简单来说,用户找我们内部平台进行认证,实际上是跳转到具体的钉钉或者企业微信去做实际认证,只不过认证结果最终会给到我们内部平台,我们内部平台去做基本校验即可

看到此处,是否会有小伙伴有疑问,直接将第三方平台的用户密码也同步过来不就好吗? 这样就可以自己内部平台去校验账号密码了

兄弟,要知道,第三方平台的用户密码是属于用户隐私,是不会暴露出去的,而且在 A 平台认证,使用 B 平台的密码,这不合理哦

🧐🧐🧐这个时候,这个伟大的公司来了一批新人,这批新人也需要用上我们的内部产品,这个时候还需要管理员去操作一次用户同步才行

如果新员工是断断续续的来,那么管理员都要去操作同样的同步用户操作,公司管理员的管理成本一下子就提高了不少,对于公司管理员来说是不合理的,这个产品还不太行

貌似解决了我的一部分问题,但是好像又没有全部解决,要是有更好的产品,我自然第一时间会进行替换😥😥😥

🧐🧐直接使用 JIT 方式认证后录入用户

只要思想不滑坡,办法总比困难多

一般自己的产品如果不是被自己优化迭代,那么就是被竞争者颠覆,自我更新迭代尤其重要

针对以上问题,我们提出了 JIT 的方式,让用户无需全部同步组织结构,而是经过认证后,即可录入到平台

这样即减少了 管理员 不必要的麻烦,还让用户认证变得简单,最重要的是让用户认证和用户同步得到真实的解耦,不再相爱相杀,相互影响😃😃

上面说过 JIT 即 Just In TIme ,通过翻译则能感受到他的作用,实时录入,正是时候,这个功能做上去,对于客户来说,确实正是时候

JIT 的基本实现也很简单明了,流程如下

  • 用户触发认证,经过第三方平台认证后,内部平台校验认证信息,拿到具体用户详情
  • 内部平台校验该用户是否存在于平台中,若存在,则正常进行认证后的逻辑
  • 若用户不存在于平台中,则将用户的组添加到平台中,将该用户添加到平台中,再走认证后的逻辑

可以查看,仅仅是在认证流程中做了一些微调,即可让客户管理员轻松许多,使用了这个产品,管理成本也大幅降低,效率大幅提升

做产品,做开发,如果能够看得更远,站在用户的角度去看,可能你会看到更多的需求和问题

希望我们都能拥有用户思维

本篇文章如果对你能够带来一点思考和帮助的话,还请留下你的足迹,欢迎讨论,不足之处,还请不吝赐教

感谢阅读,欢迎交流,点个赞,关注一波 再走吧

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

文中提到的技术点,感兴趣的可以查看这些文章:

  • 【性能优化下】组织结构同步优化二,全量同步/增量同步,断点续传实现方式
  • 【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?
  • 坑爹,线上同步近 3w 个用户导致链路阻塞引入发的线上问题,你经历过吗?
  • OAUTH之钉钉第三方授权

可以进入地址进行体验和学习:https://xxetb.xet.tech/s/3lucCI

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

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

相关文章

java.lang.ClassNotFoundException: rx.Single(hystrix)

做springcloud整合hystrix时候,接口加上HystrixCommand后报错。 原因是hystrix依赖的第三方Jar----rxjava版本低,把rxjava更新为最新jar即可

Linux Day18 TCP_UDP协议及相关知识

一、网络基础概念 1.1 网络 网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、 路由器等设备。 1.2 互联网 把多个网络连接起来就构成了互联网。目前最大的互联网就是因特网。 网络设备有:交换机、路由器、…

C语言基础知识点(八)联合体和大小端模式

以下程序的输出是() union myun {struct { int x, y, z;} u;int k; } a; int main() {a.u.x 4;a.u.y 5;a.u.z 6;a.k 0;printf("%d\n", a.u.x); } 小端模式 数据的低位放在低地址空间,数据的高位放在高地址空间 简记&#xff…

c指针进阶

目录 char* 指针 指针数组 数组指针 应用 接收一维数组(不常用) 接收二维数组 存放数组指针的数组 一维数组传参 二维数组传参 函数指针 两段有趣的代码 函数指针数组 应用——计算器 指向函数指针数组的指针 回调函数 qsort 修改冒泡排序 char* 指针 一个char*…

Android:创建jniLibs的步骤

一、前言: android libs,jniLibs库的基本使用 libs,jniLibs用来存放各种.so库文件。如果没有jniLibs目录需要自己手动创建,并且库名称也不能随便更改。 二、解决方案: 我之前弄了好久也弄不出来,之前有说…

ubuntu20.04下源码编译colmap3.9

由于稠密重建需要CUDA,因此先安装CUDA,我使用的是3050GPU,nvidia-smi显示最高支持CUDA11.4。 不要用sudo apt安装,版本较低,30系显卡建议安装CUDA11.0以上,这里安装了11.1版本。 下载: cuda_1…

程序员接单实现财富自由?原来是用了这十大良心平台!!!

后疫情时代下,经济复苏缓慢,处于下行阶段。同时,由于强大的生活压力,社会内卷日益严峻 各行各业的打工人,都在公司里“阴暗扭曲爬行”。从“996”到“007”,工作强度简直是苦不堪言。尤其对咱们IT行业,本来…

Python 打印文本进度条

""" 打印文本进度条知识点:1、字符串运算,注意只能适用于加法、乘法,例如:123 123 123123例如:123 * 3 1231231232、循环语句while、for3、条件语句if4、重点:转义字符\r,可以…

浙大mpa项目提前批面试如果拿不到A资格怎么办?

2024年浙江大学MPA项目提前批面试申请已经结束,至今来看总的申请人数跟去年2023届基本相当,超过四百名学员报名提面,按照去年1923人报考的体量来看,大多数人恐怕还是把录取的希望保留到常规批复试中。那么,400提面考生…

Linux 爱好者线下沙龙:LLUG 2023 深圳硬核来袭 | 第三站

导读:2023 年 9 月 24 日下午,我们将在深圳举行 LLUG 2023 深圳场。本文转自 Linux 中国,以下为本次活动介绍。本文字数:1629,阅读时长大约:2分钟 经历过 6 月北京场、7 月上海场,一个月的休整…

关于物联网技术的水电厂电气开关柜测温系统设计应用

摘要:针对洪江水电厂电气开关柜温度无法在线监测的问题,本文提出了一种基于物联网技术的水电厂开关柜温度测量系统。该系统部署简单高效,能快速采集设备温度数据,通过4G或者WiFi无线信号将数据送入物联网云平台,实现开关柜温度远程…

常见的项目进度管理失败的原因及应对建议

在项目管理中,进度管理是核心环节之一。然而,许多项目经理在实施过程中面临失败的困境。为了改善这一状况,本文将分析我们常见三种的进度管理失败的原因,并分享一些有效的提升效率的方法。希望对大家有所帮助。 进度管理失败的原…

ReclerView的多种条目布局

一、效果图 模仿QQ看点的布局: 二、代码 MoreTypeAdapter : package com.example.qq.ThirdFragment.Adapter;import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import an…

[杂谈]-十六进制数

十六进制数 文章目录 十六进制数1、概述2、十六进制数字3、以十六进制计数4、二进制数补零5、十六进制到十进制转换6、十进制到十六进制转换7、二进制到十六进制转换示例8、十六进制转二进制和十进制示例9、总结 1、概述 十六进制 数字是一种以16为基数的计数系统,…

pcl--第八节 点云配准数学原理

学习目的: 能够大致看懂技术算法的论文(理论理解能力)能够将论文和代码对应起来(代码追踪能力)知道常见算法函数的代码实现方式(算法实现能力) 注意!不要求能够推导、证明算法论文…

导航菜单布局

制作包含logo、菜单、按钮的3分离布局菜单 完成效果 准备html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

Multisim14.0仿真(二十)74LS161 4位同步二进制加法计数器

一、仿真原理图&#xff1a; 二、仿真效果图&#xff1a;

C/C++内存管理相关知识点

1.内存分布 C/C将内存大体上分为四个区域&#xff1a;栈区、堆区、静态区&#xff08;数据段&#xff09;、常量区&#xff08;代码段&#xff09;。 栈区&#xff1a;用来存储函数调用时的临时信息的结构&#xff0c;存放为运行时函数分配的局部变量、函数参数、返回数据、返…

解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制

一、引言 癌症是全球范围内健康领域的一大挑战&#xff0c;早期预测和诊断对于提高治疗效果和生存率至关重要。机器学习在癌症预测中发挥了重要作用&#xff0c;可以从临床数据中学习并构建癌症预测模型&#xff0c;帮助医生进行早期检测和干预&#xff0c;提高患者的生活质量和…

kubernetes集群证书过期启动失败问题解决方法

1、问题现象 执行kubectl命令异常报告 [rootk8s-master1 ~]# kubectl get node The connection to the server 192.168.227.131:6443 was refused - did you specify the right host or port? [rootk8s-master1 ~]# 查看etcd的日志&#xff0c;报错信息如下 {"level&…