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=