API 授權(quán)與驗證機制
概覽
傳統(tǒng) API 而言,授權(quán)與驗證機制一直是被高度重視的安全問題之一,API 安全一直是被開發(fā)者們所討論。SUBMAIL API 在設(shè)計之初便已將 API 安全問題融入到我們的 DNA 。
SUBMAIL 有兩種驗證方式:密匙明文驗證模式和數(shù)字簽名驗證模式,選擇一種適合你生產(chǎn)環(huán)境的驗證機制。
密匙明文驗證模式
明文的密匙驗證模式,這種驗證方式在集成接入過程中非常高效。
要使用密匙明文驗證模式,請在 signature
參數(shù) 中提交你的應(yīng)用密匙(也就是appkey)。
使用密匙明文驗證模式時,請忽略 timestamp 和 sign_type 參數(shù)
數(shù)字簽名驗證模式
數(shù)字簽名驗證模式,適用于安全要求較高的應(yīng)用。
數(shù)字簽名方法與規(guī)則
- 將所有提交的參數(shù)升序排列:僅單次提交的參數(shù),不包括
signature
字段升序(A-Z)排列 (注:tag參數(shù)不參加加密計算) - 創(chuàng)建簽名字符串:以
"key=value"
+"&"(
連接符)+"key=value"
的方式連接所有參數(shù)。此簽名字符串類似與HTTP GET/POST
請求時的字符串。 - 創(chuàng)建簽名:在創(chuàng)建的字符串前后加上 APPID 和 APPKEY 拼接簽名字符串(例:
string=appid+appkey+signature+appid+appkey
),然后使用md5(string)
或sha1(string)
創(chuàng)建簽名。
要使用數(shù)字簽名驗證模式,請將 sign_type 參數(shù)設(shè)為 md5 或 sha1 , 然后將 signature 參數(shù)設(shè)為你計算的簽名字符串(作為參考,此簽名方法在 SUBMAIL SDK 或者demo示列中有完整的簽名創(chuàng)建方法和案例)
平臺提供兩套簽名驗證方式,當(dāng)sign_version設(shè)置為2時則采用第二套計算方式,部分參數(shù)將不再參數(shù)計算,具體參數(shù)計算說明請參考對應(yīng)api文檔中
sign_version
的參數(shù)說明。
Timestamp
UNIX 時間戳
如果你使用數(shù)字簽名方式,你需要在每條API 請求中加入 timestamp
UNIX 時間戳,且此參數(shù)將必須被包含在簽名字符串中,參與計算簽名。
UNIX 時間戳 是安全 API 請求中非常重要的概念,在 API 請求或簽名被創(chuàng)建之前,你需要從 SUBMAIL 服務(wù)器端獲取 UNIX 時間戳,并確保請求 UNIX 時間戳至發(fā)送請求的過程小于6秒。