基于钉钉应用的免登安全交互方案

Posted 志波同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于钉钉应用的免登安全交互方案相关的知识,希望对你有一定的参考价值。

一、背景描述

钉钉提供了应用市场功能,市场中提供了各种各样的应用,这些应用都是基于钉钉的开放平台规范进行开发的。钉钉的开放平台有自己的用户体系,自有应用(企业自己的应用程序)也有独立的用户体系,如何保证双方用户互通、以及安全交互是本文讨论的问题。

二、面临的问题

1、钉钉用户如何与自有用户(企业自己的用户)打通。
钉钉开放平台提供接口,可以获取对应企业下的钉钉用户信息,将 dingUserId(钉钉用户id) 与 localUserId(自有用户id) 进行一一映射,在登录时可以通过映射关系将用户关联起来。

在进行映射前,需要约定好用户唯一标识,如:手机号、邮箱、工号等。映射方式可以是人工匹配,也可以通过双方系统中的用户唯一标识进行自动匹配。

2、如何保证是合法用户,并且不可以水平越权。
见安全交互流程。

三、安全交互流程


1、authToken 生成方案
采用 UUID 工具生成的 32 位随机字符串。
合法性校验规则:[0-9a-f]32。

2、authToken 刷新
前端定时刷新 authToken,定时周期小于 authToken 的缓存时间。在调用接口时,如果服务端返回的是 authToken 过期,前端也会刷新 authToken。

3、authToken 缓存清除
1)超时后自动删除。
2)在每次刷新 authToken 时,将 oldAuthToken 传入,服务端会先将 oldAuthToken 的缓存时间置为 60 秒,然后生成 newAuthToken。oldAuthToken 的缓存时间设置为 60 秒,是为了方便并行进行的接口调用,这个缓存时间可以设置的更小一些。

4、该方案存在的问题
如果 authToken 被劫持了,黑客可以通过 authToken 恶意获取系统数据。因此 authToken 的缓存时间要尽可能的小,比如5分钟。接口一定要进行水平越权校验,这样可以保证 authToken 泄露后,黑客获取到的数据是有限的。

钉钉接口文档:
1、获取免登授权码接口文档
2、获取 access_token 接口文档

以上是关于基于钉钉应用的免登安全交互方案的主要内容,如果未能解决你的问题,请参考以下文章

js api 实现钉钉免登

用java实现“钉钉微应用,免登进入某H5系统首页“功能”

前端获取钉钉免登code

钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息

Java钉钉开发_02_免登授权(身份验证)(附源码)

ODOO钉钉企业微应用后台管理员SSO单点登录