管理凭证

管理凭证(Access Token)是七牛云存储用于验证管理请求合法性的机制。建议仅在业务服务器端使用这一类凭证,避免意外授权导致滥用。

凭证算法

  1. 生成待签名的原始字符串:

    抽取请求URL中<path><path>?<query>的部分与请求内容部分(即HTTP Body),用“\n”连接起来。
    如无请求内容,该部分必须为空字符串。

    注意:当Content-Typeapplication/x-www-form-urlencoded时,签名内容必须包括请求内容(即HTTP Body)。

    signingStr = "<path>?<query>\n"
    或
    signingStr = "<path>?<query>\n<body>"
    
  2. 使用SecertKey对上一步生成的原始字符串计算HMAC-SHA1签名:

    sign = hmac_sha1(signingStr, "<SecretKey>")
    
  3. 对签名进行URL安全的Base64编码

    encodedSign = urlsafe_base64_encode(sign)
    
  4. 最后,将AccessKeyencodedSign:连接起来:

    accessToken = "<AccessKey>:<encodedSign>"
    

计算示例

假设有如下的管理请求:

```
AccessKey = "MY_ACCESS_KEY"
SecretKey = "MY_SECRET_KEY"

url = "http://rs.qiniu.com/move/bmV3ZG9jczpmaW5kX21hbi50eHQ=/bmV3ZG9jczpmaW5kLm1hbi50eHQ="
```

则待签名的原始字符串是:

```
signingStr = "/move/bmV3ZG9jczpmaW5kX21hbi50eHQ=/bmV3ZG9jczpmaW5kLm1hbi50eHQ=\n"
```

签名字符串是:

```
注意:签名结果是二进制数据,此处输出的是每个字节的十六进制表示,以便核对检查。

sign = "157b18874c0a1d83c4b0802074f0fd39f8e47843"
```

编码后的签名字符串是:

```
encodedSign = "FXsYh0wKHYPEsIAgdPD9OfjkeEM="
```

最终的管理凭证是:

```
accessToken = "MY_ACCESS_KEY:FXsYh0wKHYPEsIAgdPD9OfjkeEM="
```

附注

无。

代码示例

// TODO: 代码示例goes here.

内部参考资源

外部参考资源


如果有任何问题,请进入 七牛云存储问答社区 或者发送 工单 咨询