使用第三方账号认证(二):钉钉小程序免登

cybozu发表于:2022年02月08日 15:58:27更新于:2023年03月10日 16:40:59

Index

需求

钉钉扫码登录这一文章中,我们只是建了一个钉钉H5微应用作为工具人使用。

那么能不能完善一下,让这个微应用真正运行起来呢?

原理

钉钉H5微应用说穿了就是一个内嵌网页,我们只要将kintone的首页嵌入即可。

免登方面,我们可以参考钉钉官方免登方案,获取免登码。

免登码和kintone账号的对应则可以使用钉钉扫码登录中的代码。

由于需要从手机端访问IdP,我们需要把我们的程序部署到互联网上或使用内网穿透程序。

程序

程序设计图如下:

00162047f3ae18d584a111cade08a96

代码方面我们可以复用钉钉扫码登录的代码,基础环境搭建也和其一致。

https://github.com/cyaoc/Dingtalk-IdP-demo

代码说明

  1. 钉钉微应用首页需指向IdP服务器,再通过303重定向再到kintone。

  2. 钉钉JSAPI调用存在限制,只能在同一个域名下调用。因此如果设定了kintone的首页,会导致IdP的免登失效。

  3. IdP通过user agent来判定http request是否来自钉钉。

配置

具体的配置和钉钉扫码登录中的相似,这里只列出不同处:

IdP端配置

钉钉端配置

  1. 进入钉钉H5微应用的开发管理。

    1. 选择开发模式为快捷链接。

    2. 设置快捷链接地址:http://内网穿透子域名.vaiwan.com/re?domain=你的kintone域名

  2. 部署与发布中选择可使用范围并点击发布。

kintone共通管理配置

  1. 进入cybozu共通管理->系统管理->安全性->登录

  2. 将Identity Provider的SSO终结点URL(HTTP-Redirect)改为http://内网穿透子域名.vaiwan.com/saml/sso

  3. 将退出cybozu.cn后的跳转URL改为http://内网穿透子域名.vaiwan.com/signout

运行效果

001620481d5691a0a104f61d63f0e69