springboot项目接入钉钉登录
为什么要接入钉钉登录?
钉钉登录可以进行扫码,这样用户可以不记录账号和密码,有些人认为账号和密码很好记呀,但是太过于简单的话,容易被人踩到,我有一个同事闲来无聊逛别人的网站,就猜到了后台,还猜到了一个账号的密码,进去权限还不低。自己的用户和钉钉用户绑定后,如果有人离职,我们也可以通过监听一些消息,自动的清理账号,回收资源。如果我们将我们的应用直接嵌入到钉钉工作台里面,我们还可以更近一步,直接做到钉钉内免登录,这样使用系统更加方便。
如何接入钉钉登录?
钉钉登录本质上就是钉钉的用户数据和我们的用户数据进行绑定,然后钉钉登录后,我们根据钉钉的唯一性信息,去级联出我们的用户信息实现登录功能。
而我们的钉钉用户是依托于企业的,应用是依托于企业的,我们这个唯一性信息是什么,我们可以参考钉钉的基础概念
看文档中我理解的是UserId
和UnionId
都能标志一个用户在一个企业下唯一,钉钉文档好多介绍登录的文档,这是最新的,我们根据这个去做比较简单
按照这个文档,如果我们已经绑定了的话流程就如这个时序图,当然如果我们的系统不需要自己的用户信息,我们完全可以在拿到钉钉用户信息后直接放到session里面进行登录即可。
绑定的步骤也比较简单,我们还是调用钉钉登录流程只不过,我们将根据unionId查询用户信息进行登录这一步换成绑定用户信息即可,返回json啥的都行,前台好判断就行,绑定需要在我们的用户登录后进行操作。
创建企业内应用
需要申请的权限
- 个人手机号信息
- 通讯录个人信息读权限
注意:权限范围
需要设置全部员工。
springboot demo项目
这是一个实现接入钉钉登录的springboot项目的demo, 项目主要演示功能
- 我们系统账号和钉钉账号绑定解绑
- 通过钉钉登录登录我们的系统
- 在钉钉工作台里面实现免登功能(先绑定)。
首先先准备一个数据库库,库名可以起名dingtalk-login, 执行sql里面的脚本 创建表,然后在钉钉管理后台创建应用,复制参数更改springboot项目的yml配置。
项目对于钉钉接口的调用都是使用springcloud openfeign对接,个人感觉使用feign比sdk好用的多,也好调试。
默认的测试用户数据:admin 123456
钉钉应用的参数配置
我们就是需要复制这两个参数修改到项目的yml
配置中
第三方网站的钉钉登录,意思是你想要在浏览器中打开网站使用钉钉登录,接入登录的参数是一定要配置的,域名一定要和自己网站打开的域名一致,这里其实就是在本地测试用内网穿透的地址,内网穿透工具钉钉提供了,不过这里我用的是
NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
免费的测试也够了
还有就是上面提到的需要的权限,可以在权限管理中搜索进行设置。
当我们的应用开发完成之后我们可以进行版本的发布,只需要把登录配置的内网穿透域名换成外网域名就可以,发布的时候可以选择应用的可见性,如果都能用的就配置全部员工就可以。
要想要在钉钉控制台中打开应用,需要开发管理中配置你需要访问的域名,因为我们有免登,我们根据钉钉提供的参数格式,获取企业的id用于免登,注意这里的corpId一定要这么填写。
这样在控制台中点击我们的应用的时候就会打开这个链接,执行我们的免登代码,登录成功自动跳转到首页。
最终的效果怎么样?
如果在钉钉控制台打开就直接登录了,因为这个账号是绑定过的