Basic認證是客戶端通過明文(Base64編碼格式)傳輸用戶名和密碼到服務端進行認證
curl -u <operator>:<password> http://fss-<區域>.vhostgo.com/<bucket>/
或者,將用戶名和密碼按 operator:password 拼接 Base64 編碼后加在請求頭的 Authorization 字段中:
1curl -X GET \2 http://fss-my.vhostgo.com/<bucket>/ \3 -H "Authorization: Basic XXXX"為了避免基本認證中 Base64 編碼可逆帶來的安全隱患,對象存儲提供了簽名認證這種更安全的認證方式。它結合請求關鍵信息和用戶身份信息,計算一個消息摘要,作為請求的 Authorization,保證請求的安全。
對于REST API,認證信息 Authorization 放在 Header 中,
簽名計算方法
xxxxxxxxxx71Authorization: WESTYUN <Operator>:<Signature>2<Signature> = Base64 (HMAC-SHA1 (<Password>,3<Method>&4<URI>&5<Date>&6<Content-MD5>7))相關參數說明
| 參數 | 必選 | 說明 |
|---|---|---|
| Operator | 是 | 用戶名 |
| Method | 是 | 請求方式,如:GET、POST、PUT、HEAD 等 |
| URI | 是 | 請求路徑,格式為/bucket/URI |
| Date | 是 | 請求日期時間,如 Wed, 22 Apr 2020 02:26:58 GMT 或者 2020-04-22 10:26:58 |
| Password | 是 | 密碼的 base64 值 |
| Content-MD5 | 否 | 請求體的 MD5 值,如果文件太大計算 MD5 不方便或請求體為空,可以為空 |
注
& 一起不參與簽名計算。所有計算的 MD5 值,格式均是 32 位小寫。30 分鐘內舉例
請求簽名
xxxxxxxxxx91// 操作員信息2Operator = westtest 3Password = base64(westtest) = d2VzdHRlc3Q=4// 參數信息5Method = PUT 6URI = /westtest/07451cbbc932a122a262e39c6a159e7f.jpg7Date = 2020-04-23 16:24:468// 上傳文件的 MD59Content-MD5 = 7ac66c0f148de9519b8bd264312c4d64生成 Signature:
xxxxxxxxxx91Signature = Base64 (HMAC-SHA1 (<Password>,2<Method>&3<URI>&4<Date>&5<Content-MD5>6))7= Base64 (HMAC-SHA1 (d2VzdHRlc3Q=,PUT&/westtest/07451cbbc932a122a262e39c6a159e7f.jpg&2020-04-23 16:13:54&7ac66c0f148de9519b8bd264312c4d64))8// HMAC-SHA1 返回的原生二進制數據進行 Base64 編碼9= JFJ3zn/ilY263BtBzz49dvXk3Kw=Authorization 簽名:
xxxxxxxxxx11Authorization: WESTYUN westtest:JFJ3zn/ilY263BtBzz49dvXk3Kw=請求 Header:
xxxxxxxxxx71PUT /westtest/07451cbbc932a122a262e39c6a159e7f.jpg HTTP/1.12Authorization: WESTYUN westtest:JFJ3zn/ilY263BtBzz49dvXk3Kw=3Content-MD5: 7ac66c0f148de9519b8bd264312c4d644Date: 2020-04-23 16:24:465Content-Type: image/jpeg6Host: fss-my.vhostgo.com7Content-Length: 33456對于FORM API,認證信息 Authorization 放在HTTP的body中。 簽名計算方法
xxxxxxxxxx81Authorization: WESTYUN <Operator>:<Signature>2<Signature> = Base64 (HMAC-SHA1 (<Password>,3<Method>&4<URI>&5<Date>&6<Content-MD5>&7<Policy>8))相關參數說明
| 參數 | 必選 | 說明 |
|---|---|---|
| Operator | 是 | 用戶名 |
| Method | 是 | 請求方式,取值為POST |
| URI | 是 | 請求路徑,格式為/bucket |
| Date | 是 | 請求日期時間,如 Wed, 22 Apr 2020 02:26:58 GMT 或者 2020-04-22 10:26:58 |
| Password | 是 | 密碼的 base64 值 |
| Content-MD5 | 否 | 請求體的 MD5 值,如果文件太大計算 MD5 不方便或請求體為空,可以為空 |
| Policy | 否 | 上傳參數的Base64 編碼,詳見 Policy 算法 |
注
& 一起不參與簽名計算。所有計算的 MD5 值,格式均是 32 位小寫。30 分鐘內生成步驟
注
舉例
xxxxxxxxxx101// 操作員信息2Operator = westtest 3Password = base64(westtest) = d2VzdHRlc3Q=4// 參數信息5Method = PUT 6URI = /westtest/07451cbbc932a122a262e39c6a159e7f.jpg7Date = 2020-04-23 16:24:468// 上傳參數,需要計算 Policy9save-key = /{year}/{mon}/{day}/west_{random32}{.suffix}10expiration = 1800生成 Policy
?x1Policy = Base64 ({"save-key": "/{year}/{mon}/{day}/west_{random32}{.suffix}", "expiration": 1800)}2 = eyJzYXZlLWtleSI6Ii97eWVhcn0ve21vbn0ve2RheX0vd2VzdF97cmFuZG9tMzJ9ey5zdWZmaXh9IiwiZXhwaXJhdGlvbiI6MTgwMH0=3?生成 Signature
xxxxxxxxxx91Signature = Base64 (HMAC-SHA1 (<Password>,2<Method>&3<URI>&4<Date>&5<policy>6))7= Base64 (HMAC-SHA1 (d2VzdHRlc3Q=,POST&/westtest&2023-06-05 10:54:01&eyJzYXZlLWtleSI6Ii97eWVhcn0ve21vbn0ve2RheX0vd2VzdF97cmFuZG9tMzJ9ey5zdWZmaXh9IiwiZXhwaXJhdGlvbiI6MTgwMH0=))8// HMAC-SHA1 返回的原生二進制數據進行 Base64 編碼9= w2pjeLG5KNieSR4KrYe/7u7QlbA=Authorization 簽名
xxxxxxxxxx11authorization=WESTYUN westtest:w2pjeLG5KNieSR4KrYe/7u7QlbA=