LDAP登录的官方解释起来有些麻烦,我先说个场景大家来理解下 你入职的时候,漂亮的 hr 给你说来个邮箱 [email protected],初始密码 123,然后说这个就是你在公司所有系统的账号密码来,记得修改哦, 然后你到了工位,你先去 oa 系统 输入邮箱密码,领了纸和笔,反正第一天没事,然后去 gitlab ,又输入了刚刚的用户名密码, 老板让你看看文档,给了个 confluence 地址,你又输入了一次,翻翻文档,快下班了,老板说第一天来,去下载我们的内部app,然后领个饭卡,体验下加班(哈哈) 你屁颠的下载了个app,app 又要用户名密码,吃完饭,在 命令窗口登录下公司的跳板机,又输入一次,你猜可能是今天一天输了好多次的用户名密码,果然对了,内心默默的夸自己机智,一天下来输了多次,密码也总算记住了
如果你遇到好多的系统(常见是 gitlab,bug平台,confluence 这些成熟在内部使用的第三方平台),每个系统都要输入用户名密码,输的还都是一样的,基本这些都是基于 LDAP 做的
LDAP 和 SSO 单点登录最大的差别就是,LDAP 是每个系统都要输入用户名密码,SSO是跳转到一个专门的页面的登录
LDAP英文全称是Lightweight Directory Access Protocol,意思是轻量目录访问协议,这个协议是基于 TCP/IP 的,意思是它的数据存储是基于目录文件的
在这些目录中存放 员工信息,电话,邮箱,也会暴露一个 api 接口 ,根据用户,密码校验, 举个例子,你搭建了一套 gitlub,公司有个基于 LDAP 的存粗用户的服务器 IP 是 136.23.35.34
然后 你在 gitlab 里配置的 请求接口配置是这样的 ldap://136.23.35.34
这里注意哈,一般我们见到的请求都是 http 打头的,这里是 ldap 开始的,说明它又一套自己的规范,回调,具体 ldap 实现细节,我们不讲
我们可以想想,为啥这些第三方的系统都是用 ldap 来做用户登录鉴权 因为 ladp 是一个协议,协议就是标准,我只要按照这个协议实现,那符合这个协议的都是能接入,这就是建立标准的好处
对于我们前端来讲,你需要知道页面什么样的表现是用的 LDAP登录,而不是2眼懵
如果你想把 LDAP 怎么设计的搞清楚,如何接入,参考 https://segmentfault.com/a/1190000002607140
总结下,LDAP 是一个登录认证的协议,在web页面体现的是,n多系统都要输入相同的用户名密码,多用户 内部的第三方平台,(gitlab,confluence,jira,nexus)
工作中,我们经常看到 pc 端登录,弹出个二维码,然后用 app 扫一下,典型的 微信网页版登录
那这个是怎么实现的呀?
网页端的二维码 本质是一个 url,比方是 http://www.a.com?uuid=xxxxx
, 这个uuid是生成的当前pc的唯一标示,
然后会定时请求后端的API,假设这个请求叫 A 请求,根据返回的状态来做下一步动作
当手机扫码后,会带上这个uuid和用户信息,发送一个请求给后端,后端拿到这个 uuid,就知道用户已经登录来,然后上面的 A 接口 就会返回一个已经登录的状态,同时返回用户信息,这样 二维码页面会跳转到用户列表页,整个扫码登录流程完成。
这里要主要点是 pc 端的那个定时请求是用 setInterval
定时请求, 还是一个长链接请求,这看自己的业务设计,都可以的,微信用的是 setInterval