日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

簽名計算使用指引

簽名機制

為保證 HTTP/HTTPS 服務的安全使用,在服務配置中可選擇開啟簽名計算,在調用 API 時全局服務會對開啟簽名的服務進行簽名計算,并將簽名放到請求header中。本文介紹計算簽名的方法和示例。

步驟一:構造規范化請求字符串

1、CanonicalizedHeaderString:

(1)header參數范圍:包括header中以“x-dmpaas”開頭的系統參數、header自定義參數,不包括header參數中的x-dmpaas-signature參數。

(2)header參數排序和拼接:

按照參數字符串字典升序對header參數排序,多個header之間用&連接。

使用等號(=)連接編碼后的header參數和編碼后的header參數值,編碼方式參考附錄。

示例:

Headers:

自定義參數

test-header1=test-header-value1

test-header2=test-header-value2

系統參數:

x-dmpaas-accesskey=testkey

x-dmpaas-beebot-chat-id=beebot-chat-id-value

x-dmpaas-signature-nonce=d990cdec-3b2c-4235-a836-704f3a4dfa18

x-dmpaas-timestamp=2022-12-08T14:11:16Z

結果:

CanonicalizedHeaderString字符串是test-header1=test-header-value1&test-header2=test-header-value2&x-dmpaas-accesskey=testkey&x-dmpaas-beebot-chat-id=beebot-chat-id-value&x-dmpaas-signature-nonce=d990cdec-3b2c-4235-a836-704f3a4dfa18&x-dmpaas-timestamp=2022-12-08T14%3A11%3A16Z

2、CanonicalizedQueryString:

(1)query參數范圍:全局服務頁面上所有query參數、URL連接串提前預置的query參數。

(2)query參數排序和拼接:

使用等號(=)連接編碼后的query參數和編碼后的query參數值,編碼方式參考附錄。

按照參數字符串字典升序對query參數排序,多個query之間用&連接。

示例:

Querys :

key1=value1

key2=value2

CanonicalizedQueryString字符串是key1=value1&key2=value2

3、CanonicalizedBodyString:請求的body 字符串,如果沒有body,就用空字符串("");

步驟二:構造簽名字符串

我們以 Java 為例,該字符串構造規則如下:

String stringToSign =

HTTPMethod + "&" +

encodeURIComponent("/") + "&" +

encodeURIComponent(CanonicalizedHeaderString) + "&" +

encodeURIComponent(CanonicalizedQueryString) + "&" +

encodeURIComponent(CanonicalizedBodyString)

備注:

HTTPMethod:發送請求的 HTTP 方法,例如 POST

encodeURIComponent編碼方法是指:使用 UTF-8 字符集按照RFC3986規則(https://www.rfc-editor.org/rfc/rfc3986?spm=a2c4g.11186623.0.0.549927b5NRn8tS#page-28)編碼請求參數和參數值進行URLEncode,編碼具體規則請參看“附錄:參數編碼方式”。

步驟三:計算簽名

在全局服務配置中可查到AccessKey匹配的AccessToken,作為加密的密鑰,使用 HMAC-SHA1 的簽名算法,計算待簽名字符串StringToSign的簽名。以 Java 為例,計算方法如下:

String signature = Base64(HMAC_SHA1(accessToken + "&", stringToSign))

現在您得到了公共參數 Signature 的簽名值 signature。然后和請求header中x-dmpaas-signature的值進行對比。

簽名示例

模擬請求配置

HTTPMethod: POST;

Headers:

自定義參數

test-header1=test-header-value1

test-header2=test-header-value2

系統參數:

x-dmpaas-accesskey=testkey

x-dmpaas-beebot-chat-id=beebot-chat-id-value

x-dmpaas-signature-nonce=d990cdec-3b2c-4235-a836-704f3a4dfa18

x-dmpaas-timestamp=2022-12-08T14:11:16Z

Querys:

key1=value1

key2=value2

Body:

{"test-body-key1":"test-body-value1","test-body-key2":"test-body-value2"}

假設您獲得了AccessKey=testkey 以及 AccessToken=testtoken,簽名流程如下:

步驟一:構造規范化請求字符串

CanonicalizedHeaderString:test-header1=test-header-value1&test-header2=test-header-value2&x-dmpaas-accesskey=testkey&x-dmpaas-beebot-chat-id=beebot-chat-id-value&x-dmpaas-signature-nonce=d990cdec-3b2c-4235-a836-704f3a4dfa18&x-dmpaas-timestamp=2022-12-08T14%3A11%3A16Z

CanonicalizedQueryString:key1=value1&key2=value2

CanonicalizedBodyString:{"test-body-key1":"test-body-value1","test-body-key2":"test-body-value2"}

步驟二:構造待簽名字符串stringToSign

POST&%2F&test-header1%3Dtest-header-value1%26test-header2%3Dtest-header-value2%26x-dmpaas-accesskey%3Dtestkey%26x-dmpaas-beebot-chat-id%3Dbeebot-chat-id-value%26x-dmpaas-signature-nonce%3Dd990cdec-3b2c-4235-a836-704f3a4dfa18%26x-dmpaas-timestamp%3D2022-12-08T14%253A11%253A16Z&key1%3Dvalue1%26key2%3Dvalue2&%7B%22test-body-key1%22%3A%22test-body-value1%22%2C%22test-body-key2%22%3A%22test-body-value2%22%7D

步驟三:計算簽名

計算簽名值。例如 AccessToken=testtoken,用于計算的 Key 為testtoken&(注意:加上后綴&)。計算得到的簽名值為jpvM83XOLhJ1lHTQR2boROe****=。本示例使用的是 Java Base64 編碼方法。

String Signature = Base64(HMAC_SHA1(AccessSecret + "&",stringToSign))

最后您可以比較請求header中的x-dmpaas-signature的值,來進行簽名校驗。

附錄

參數編碼方式

在全局服務-HTTP/HTTPS服務調用中,我們需要對請求參數和請求值,使用 UTF-8 字符集按照RFC3986規則進行編碼。具體編碼規則如下:

字符 A~Z、a~z、0~9 以及字符-、_、.、~不編碼。

對其他 ASCII 碼字符進行編碼。編碼格式為%加上16進制的 ASCII 碼。例如半角雙引號(")將被編碼為 %22。

非 ASCII 碼通過 UTF-8 編碼。

空格編碼成%20,而不是加號(+)。

以Java為例:

java.net.URLEncoder.encode(str, "UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~")

為方便表述,我們將此步驟的編碼方法,命名為 encodeURIComponent。