配置API的后端服务签名校验
签名密钥用于后端服务验证API网关的身份,在API网关请求后端服务时,保障后端服务的安全。
签名密钥由一对Key和Secret组成,签名密钥需要绑定到API才能生效。当签名密钥绑定API后,API网关向后端服务发送此API的请求时,会增加相应的签名信息,此时需要后端服务依照同样方式进行签名,通过比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。
使用限制
- 同一个环境中一个API只能绑定一个签名密钥,一个签名密钥可以绑定多个API。
- 一个API只能绑定一个相同类型的策略。
- 策略和API本身相互独立,只有为API绑定策略后,策略才对API生效。为API绑定策略时需指定发布环境,策略只对指定环境上的API生效。
- 策略的绑定、解绑、更新会实时生效,不需要重新发布API。
- API的下线操作不影响策略的绑定关系,再次发布后仍然会带有下线前绑定的策略。
- 如果策略与API有绑定关系,则策略无法执行删除操作。
使用流程
- 在控制台创建签名密钥。
- 将新创建的签名密钥绑定API。
- API网关将签名后的请求发送到后端服务,此时Authorization头中包含签名信息。后端服务通过不同的开发语言(例如Java、Go、Python、JavaScript、C#、PHP、C++、C等)进行签名,通过比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。
创建签名密钥策略
- 进入API网关控制台页面。
- 根据实际业务在左侧导航栏上方选择实例。
- 在左侧导航栏选择“API管理 > API策略”。
- 在“策略管理”页面,单击“创建策略”。
- 在“选择策略类型”弹窗中选择“传统策略 > 签名密钥”。
- 在“创建策略”弹窗中,配置策略信息。
表1 签名密钥参数说明 参数
说明
密钥名称
自定义名称,用于识别不同的密钥。
类型
选择签名密钥的认证类型,可选择“HMAC”、“Basic Auth”、“AES”和“Public Key”。
在实例的配置参数中开启“public_key_enable”功能后,才支持选择“Public Key”类型。
签名算法
选择AES的签名算法,包含以下两种:
- aes-128-cfb
- aes-256-cfb
Key
根据选择的密钥类型,填写不同的密钥信息。
- HMAC:填写APP认证所使用密钥对的Key。
- Basic Auth:填写basic认证所使用的用户名。
- AES:填写AES认证所使用的密钥key。
- Public Key:填写public_key认证所使用的公钥。
Secret
根据选择的密钥类型,填写不同的密钥信息。
- HMAC:填写APP认证所使用密钥对的Secret。
- Basic Auth:填写basic认证所使用的密码。
- aes:填写aes认证所使用的向量。
- Public Key:填写Public Key认证所使用的私钥。
确认Secret
填写与Secret一致的值。
- 单击“确定”。
策略创建后,您还需要为策略绑定API,才能使策略对API生效。
为策略绑定API
- 单击策略名称,进入策略详情。
- 在API列表区域选择环境后,单击“绑定API”。
- 筛选API分组以及发布环境,勾选所需的API。
支持通过API名称或标签筛选API,标签为创建API时定义的标签。
- 单击“确定”,绑定完成。
- 如果单个API不需要绑定此策略,单击API所在行的“解绑”。
- 如果批量API不需要绑定此策略,则勾选待解绑的API,单击列表上方“解绑”。最多同时解绑1000个API。
验证签名结果
参考签名算法对后端服务进行签名,比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。