操作场景
签名密钥用于后端服务验证API网关的身份,在API网关请求后端服务时,保障后端服务的安全。
签名密钥是由一对Key和Secret组成,签名密钥需要绑定到API才能生效。当签名密钥绑定API后,API网关向后端服务发送此API的请求时,会增加相应的签名信息,此时需要后端服务依照同样方式进行签名,通过比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。
说明
每个用户最多创建30个签名密钥。
同一个环境中一个API只能被一个签名密钥绑定,一个签名密钥可以绑定多个API。
使用流程
- 在控制台创建签名密钥。
- 将新创建的签名密钥绑定API。
- API网关将签名后的请求发送到后端服务,此时Authorization头中包含签名信息。后端服务通过不同的开发语言(例如Java、Go、Python、JavaScript、C#、PHP、C++、C、Android等)进行签名,比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。
图 签名密钥流程图
创建签名密钥
步骤 1 进入API网关控制台页面。
步骤 2 根据实际业务在左侧导航栏上方选择实例。
步骤 3 在左侧导航栏选择“API管理 > API策略”。
步骤 4 在“策略管理”页面,单击“创建策略”。
步骤 5 选择策略类型,单击“签名密钥”,弹出“创建密钥”对话框。
步骤 6 填写如表 所示信息。
表 密钥信息
信息项 描述 密钥名称
自定义名称,用于识别不同的密钥。
类型
选择签名密钥的认证类型,可选择“HMAC”、“Basic Auth”、“AES”。
签名算法
选择aes的签名算法,包含以下两种:
l aes-128-cfb
l aes-256-cfb
Key
根据选择的密钥类型,填写不同的密钥信息。
l HMAC:填写APP认证所使用密钥对的Key。
l Basic Auth:填写basic认证所使用的用户名。
l aes:填写aes认证所使用的密钥key。
l Public Key:填写public_key认证所使用的公钥。
Secret
根据选择的密钥类型,填写不同的密钥信息。
l HMAC:填写APP认证所使用密钥对的Secret。
l Basic Auth:填写basic认证所使用的密码。
l aes:填写aes认证所使用的向量。
l Public Key:填写Public Key认证所使用的私钥。
确认Secret
填写与Secret一致的值。
步骤 7 单击“确定”,完成密钥的创建。
绑定API
步骤 1 在策略管理页面,选择“签名密钥”,进入签名密钥管理信息页面。
步骤 2 通过以下任意一种方法,查看签名密钥已绑定API列表页面。
- 在待绑定API的密钥所在行,单击“绑定API”,进入“签名密钥绑定API”页面。
- 单击待绑定API的密钥名称,进入密钥详情页面。
步骤 3 单击“绑定API”,弹出“绑定API”对话框。
步骤 4 选择“API分组”、“环境”以及“API名称”,筛选所需的API。
步骤 5 勾选API,单击“绑定”,完成密钥绑定API。
说明在签名密钥绑定API后,如果API不再需要此密钥,单击“解除”,解除绑定。
验证签名结果
对后端服务进行签名,比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。