认证鉴权
访问凭证
Access Key(访问密钥)是一种用于身份验证和授权的凭据,用于访问和使用各种服务和API。Access Key 通常由用户在用户控制台-安全中心生成和管理。
Access Key 由两部分组成:Access Key ID(访问密钥标识符)和 Secret Access Key(访问密钥密钥)。Access Key ID 是用于标识访问密钥的唯一标识符,而 Secret Access Key 则是用于对请求进行签名和身份验证的机密密钥。
使用 Access Key 进行身份验证可以提供一定的安全性,因为只有持有正确的 Access Key 才能通过身份验证并获得访问权限。Access Key 通常需要妥善保管,避免泄露给未经授权的人员或应用程序。
在使用某些服务或API时,需要在请求中包含 Access Key 相关的信息,以证明身份并获得授权。具体的使用方法和要求取决于所使用的服务或API的提供商。通常,Access Key 相关的信息需要作为请求的一部分,可以通过请求头、请求参数或请求体的形式进行传递。
请求签名
平台提供了安全的签名校验 方式,API访问中需要生成Http Authorization Header, 只有通过签名校验的请求才能到达业务后端。
Authorization: hmac accesskey="{accesskey}", algorithm="{algorithm}", headers="{headers}", signature="{signature}"
参数名称 | 类型 | 说明 |
---|---|---|
accesskey | string | 用户的access key id |
algorithm | string | hmac-sha256 |
headers | string | 参与签名计算的header, 当前为x-date 和request-line |
signature | string | 请求签名 |
计算签名
对HTTP请求进行规范并取得请求的哈希值后,将其与签名算法、签名时间一起组成待签名字符串。
StringToSign =
"x-data: {X-Data}" + \n +
{RequestLine}
伪代码中参数说明如下。
- X-Date :请求时间戳。
- 格式参考https://datatracker.ietf.org/doc/html/rfc2616#section-3.3
- RequestLine :https://datatracker.ietf.org/doc/html/rfc2616#section-5.1
将SK(Secret Access Key)和创建的待签字符串作为加密哈希函数的输入,计算签名,将二进制值转换为base64表示形式。伪代码如下:
signature = Base64Encode(HMAC(Secret Access Key, StringToSign))
Secret Access Key | 签名密钥 |
---|---|
string to sign | 创建的待签字符串 |
例子
AccessKey ID: 9eb0a32f-09c6-48da-8feb-34806dd60bdc
AccessKey Secret: secret
X-Date: Thu, 22 Jun 2017 17:15:21 GMT
request-line: GET /requests HTTP/1.1
StringToSign = "x-data: {X-Data}" + \n +{RequestLine}
= "x-date: Thu, 22 Jun 2017 17:15:21 GMT\nGET /requests HTTP/1.1"
signature = base64(hmac_sha256("secret", StringToSign))
= "IXlgb2baHcvPrV7a/C+hKS+E5oHIQXXyz4k4maWws50="