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