- 文档首页
数据库传输服务
API 参考
调用方式
签名机制
签名机制
数据库传输服务 DTS 服务会对每个访问的请求进行身份验证,因此您需要在请求中包含签名信息。本文介绍数据库传输服务 DTS 的 API 签名机制。
创建正规化请求
您在访问需要按照下面的方法对请求进行签名处理:
- HTTPRequestMethod 指代 HTTP 请求的 method,例如:GET、POST 等。
- CanonicalURI: 指代正规化后的 URI。如果 URI 为空,那么使用"/"作为绝对路径。在火山引擎中绝大多数接口的 URI 都为"/"。
- CanonicalQueryString 指代正规化后的 Query String。例如:
对于 Query String 的正规化大致的过程如下:
- URI 编码每一个 querystring 参数名称和参数值。
- 按照 ASCII 字节顺序对参数名称严格排序,相同参数名的不同参数值需保持请求的原始顺序。
- 将排序好的参数名称和参数值用=连接,按照排序结果将“参数对”用&连接。
- CanonicalHeaders 指代正规化后的 Header。其中伪代码如下:
其中
说明
- Lowercase 表示将 Header 的名称全部转化成小写。
- Trimall 表示去掉 Header 的值的前后多余的空格
- SignedHeaders 指代参与签名的 Header 名称。签名 Header 是包含在正规化 Headers 中的名称列表,其目的是指明哪些 Header 参与签名计算,从而忽略请求中被 proxy 添加的额外 Header,其中 Host、X-Date 两个 Header 如果存在则必须添加进来,伪代码如下:
- RequestPayload 指代完整的请求的 Body。需要注意如下几点:
- URI 编码(注:同 RFC3986 方法)每一个 Query String 参数名称和参数值(注:GET 方式需要包含哈希算法、信任状、签名日期和签名 Header 等全部参数)。
- 将排序好的参数名称和参数值用=连接,按照排序结果将“参数对”用&连接。
创建签名字符串
签名字符串主要包含请求以及正规化请求的元数据信息,由签名算法、请求日期、信任状和正规化请求哈希值连接组成,伪代码如下:
计算签名秘钥(signing-key)
在计算签名前,首先从私有访问密钥(SecretAccess Key)派生出签名密钥(signing key),而不是直接使用私有访问密钥。具体计算过程如下:
说明
表达式中用{}括起来的内容代表上文计算出的中间过程。
签名示例
最近更新时间:2026.03.16 16:04:09