- 产品文档
- > 管理与监控
- > 访问控制
- > 开发指南
- > API 参考 (STS)
- > 签名方法
STS API
签名方法
1. 规范化请求参数(CanonicalizedQueryString)。
- 将公共参数(除signature外)和自定义参数按字典序排序。
- 使用
=
将参数名和参数值连接,参数间使用&
连接。
2. 根据如下规则拼接出请求字符串:
HTTPMETHOD + ? + CanonicalizedQueryString
其中,HTTPMETHOD表示请求方法,如GET,POST。CanonicalizedQueryString表示第一步中生成的规范化请求参数。
3. 将请求字符串使用urlEncode编码生成待签名的字符串(stringToSign)。
需要转义的字符请参考:rfc3986。可使用一般语言自带的URL编码库(如Java中的java.net.URLEncoder)对stringToSign进行签名。
4. 生成签名字符串。
根据使用的签名算法(目前仅支持HMAC-SHA256算法)将第三步中的stringToSign进行签名计算,使用的签名KEY就是和AccessKey对应的SecretKey, 然后将生成的签名串使用十六进制(Hex编码)进行编码,最终得到签名串。
签名示例(以AssumeRole为例子)
1. 未签名的AssumeRole请求(假设AccessKey为testAK):
2. 计算出待签名的字符串(stringToSign):
GET%3FacceptType%3Djson%26accessKey%3DtestAK%26duration%3D3600%26region%3Dcn-east-1%26roleNrn%3Dncs%3Asam%3A%3A286516215260643328%3Arole%2FstsRole%26signatureAlgorithm%3DHMAC-SHA256%26signatureNonce%3Db2b48500-f3e1-4fe8-9fe5-f61b1174ef8b%26signatureVersion%3D1.0%26timestamp%3D2017-08-01T05%3A55%3A37Z
3. 计算签名(假设SecretKey为testSK):
6fc5035e943121ec8bc60b0f91e6bd1416200344649250a12af08684f0c1296d