基於釘釘應用的免登安全交互方案

一、背景描述

釘釘提供了應用市場功能,市場中提供了各種各樣的應用,這些應用都是基於釘釘的開放平臺規範進行開發的。釘釘的開放平臺有自己的用戶體系,自有應用(企業自己的應用程序)也有獨立的用戶體系,如何保證雙方用戶互通、以及安全交互是本文討論的問題。
釘釘應用類型

二、面臨的問題

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 接口文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章