OpenAPI 授權與驗證機制
概覽
傳統 API 而言,授權與驗證機制一直是被高度重視的安全問題之一,API 安全一直是被開發者們所討論。WiseCRM365 OpenAPI 在設計之初便已將 API 安全問題融入到我們的 DNA 中。
OpenAPI 有兩種驗證方式:密匙明文驗證模式和數字簽名驗證模式,選擇一種適合你生產環境的驗證機制。
授權參數
參數 | 說明 |
---|---|
appid | APP ID(從 WiseCRM365 中獲取) |
appkey | 應用密匙(從 WiseCRM365 中獲取) |
sign_type | 簽名算法,可選值 MD5 或 SHA1 |
timestamp | 時間戳(毫秒級) |
sign | 簽名字符串 |
密匙明文驗證模式
明文的密匙驗證模式,這種驗證方式在集成接入過程中非常高效,但我們不建議在生成環境中使用此方式。
要使用密匙明文驗證模式,請在 sign 參數中提交你的應用密匙。
使用密匙明文驗證模式時,請忽略 timestamp 和 sign_type 參數
數字簽名驗證模式
數字簽名驗證模式,適用于安全要求較高的應用。
數字簽名方法與規則
- 將所有提交的參數升序排列:僅單次提交的參數,不包括 sign 字段升序(a-z)排列
- 創建簽名字符串:以
"key=value" + "&" + "key=value"
的方式連接所有參數(為空的參數不需要參與簽名)。此簽名字符串類似與 HTTP GET/POST 請求時的字符串 - 創建簽名:在創建的簽名字符串后加上
"&" + "appkey=APPKEY"
拼接簽名字符串,然后使用md5(string)
或sha1(string)
創建簽名
要使用數字簽名驗證模式,請將 sign_type 參數設為 md5 或 sha1 , 然后將 sign 參數設為你計算的簽名字符串
Timestamp UNIX 時間戳
如果你使用數字簽名方式,你需要在每條 API 請求中加入 timestamp UNIX 時間戳,且此參數將必須被包含在簽名字符串中,參與計算簽名。
UNIX 時間戳是安全 API 請求中非常重要的概念,在 API 請求或簽名被創建之前,你需要保證 API 請求端時間與WiseCRM365 OpenAPI 服務器時間同步(與 國家授時中心 時間一致),并確保請求 UNIX 時間戳至發送請求的過程小于 30 秒,否則將導致 timestamp 參數驗證失敗。
示例
作為參考,我們提供了一個 Java 版本的調用示例 點擊下載