管理凭证accessToken
是网宿云存储用于验证资源管理接口请求的合法性。建议仅在业务服务器端使用这一类凭证,避免意外授权导致滥用。
SecretKey
AccessKey
抽取请求URL中的<path>
或<path>?<query>
部分,与<body>
(即HTTP Body),用\n
连接,得到signingStr
有以下4种情况:
signingStr = "<path>?<query>\n"
或 signingStr = "<path>?<query>\n<body>"
或 signingStr = "<path>\n"
或 signingStr = "<path>\n<body>"
例如:
列举资源(list)接口
<path>:/list
<query>:bucket=<Bucket>&marker=<Marker>&limit=<Limit>&prefix=<Urlsafe_Base64_Encoded_Prefix>&mode=<Mode>
<body>:无
则signingStr = "/list?bucket=<Bucket>&marker=<Marker>&limit=<Limit>&prefix=<Urlsafe_Base64_Encoded_Prefix>&mode=<Mode>\n"
音视频处理(avthumb/vframe)接口
<path>:/fops
<body>:<RequestParams>,即相应的请求内容
则signingStr ="/fops\n<RequestParams>"
使用SecretKey
对signingStr
进行HMAC-SHA1
签名,得到Sign
Sign = hmac_sha1(signingStr,"<SecretKey>")
注:不同语言的HMAC-SHA1方法有差异,可参考各语言SDK中的实现
外部资源:HMAC-SHA1签名
示例代码:
HMAC-SHA1签名
对签名数据Sign
进行URL安全的Base64编码,得到encodeSign
encodeSign = urlsafe_base64_encode(Sign)
将AccessKey
与encodeSign
用:
连接,得到管理凭证accessToken
accessToken = <AccessKey>:<encodeSign>