一、用户签名认证
对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKey和SecretKey对称加密验证实现。
API中的AccessKey和SecretKey 是通过用户的账户设置面板来生成的。
AccessKey是访问者身份,SecretKey是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。
二、在URL中构造签名
1. 构造规范化请求字符串
- 排序参数。排序规则以首字母顺序排序,参数不包括signature参数。
- 编码参数。使用UTF-8字符集按照RFC3986规则对请求参数和参数取值进行编码。
- 使用等号(=)连接编码对应的请求参数和参数取值。
- 使用于号(&)连接编码后其他的请求参数,注意参数排序与上方一致。
2. 构造签名字符串
1)构造待签名字符串dataToSign。HTTPMethod(发送请求的HTTP方法) + "&%2F&" + 上述构造的规范化请求字符串。比如: String dataToSign ="GET&%2F&accessKey%3DEIs1Fp4N%26signatureMethod%3D1.0";
2)计算dataToSign的HMAC-SHA1值,并用Java Base64编码转为字符串。 计算方法:String signature = Base64(HMAC-SHA1(secretKey, UTF-8-Encoding-Of(dataToSign)));
3)添加根据RFC3986规则编码后的参数signature到规范化请求字符串中。
**具体实现方法可以参考**:https://help.aliyun.com/document_