更新时间:2024-11-27 GMT+08:00
分享

配置API的后端服务签名校验

签名密钥用于后端服务验证API网关的身份,在API网关请求后端服务时,保障后端服务的安全。

签名密钥由一对Key和Secret组成,签名密钥需要绑定到API才能生效。当签名密钥绑定API后,API网关向后端服务发送此API的请求时,会增加相应的签名信息,此时需要后端服务依照同样方式进行签名,通过比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。

使用限制

  • 同一个环境中一个API只能绑定一个签名密钥,一个签名密钥可以绑定多个API。
  • 一个API只能绑定一个相同类型的策略。
  • 策略和API本身相互独立,只有为API绑定策略后,策略才对API生效。为API绑定策略时需指定发布环境,策略只对指定环境上的API生效。
  • 策略的绑定、解绑、更新会实时生效,不需要重新发布API。
  • API的下线操作不影响策略的绑定关系,再次发布后仍然会带有下线前绑定的策略。
  • 如果策略与API有绑定关系,则策略无法执行删除操作。

使用流程

图1 签名密钥流程图
  1. 在控制台创建签名密钥。
  2. 将新创建的签名密钥绑定API。
  3. API网关将签名后的请求发送到后端服务,此时Authorization头中包含签名信息。后端服务通过不同的开发语言(例如Java、Go、Python、JavaScript、C#、PHP、C++、C等)进行签名,通过比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。

创建签名密钥策略

  1. 进入API网关控制台页面。
  2. 根据实际业务在左侧导航栏上方选择实例。
  1. 在左侧导航栏选择“API管理 > API策略”。
  2. 在“策略管理”页面,单击“创建策略”。
  3. 在“选择策略类型”弹窗中选择“传统策略 > 签名密钥”。
  4. 在“创建策略”弹窗中,配置策略信息。

    表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一致的值。

  5. 单击“确定”。

    策略创建后,您还需要为策略绑定API,才能使策略对API生效。

为策略绑定API

  1. 单击策略名称,进入策略详情。
  2. 在API列表区域选择环境后,单击“绑定API”。
  3. 筛选API分组以及发布环境,勾选所需的API。

    支持通过API名称或标签筛选API,标签为创建API时定义的标签。

  4. 单击“确定”,绑定完成。

    • 如果单个API不需要绑定此策略,单击API所在行的“解绑”。
    • 如果批量API不需要绑定此策略,则勾选待解绑的API,单击列表上方“解绑”。最多同时解绑1000个API。

验证签名结果

参考签名算法对后端服务进行签名,比对签名结果和API网关传过来的Authorization头中签名是否一致来校验API的合法性。

相关文档