首先本次说的 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