开发者社区> 问答> 正文

什么是后端签名密钥?



概述

  • API 网关提供后端 HTTP 服务签名验证功能,创建签名密钥并将签名密钥绑定到 API 即可开启后端签名(请妥善保管此密钥,API 网关会对密钥进行加密存储来保障密钥的安全性)。
  • 开启后端签名后 API 网关到后端HTTP服务的请求将会添加签名信息,后端 HTTP 服务读取 API 网关的签名字符串,然后对收到的请求进行本地签名计算,比对网关与本地签名结果是否一致。
  • 所有您定义的参数都会参与签名,包括您录入的业务参数、您定义的常量系统参数和 API 网关系统参数(如 CaClientIp 等)。
  • 后端对 API 网关的签名字符串校验后,如果校验失败,建议返回 errorcode = 403;errormessage = “InvalidSignature”。
  • 若您的后端服务为VPC环境,且通过内网对接(专属网络VPC环境开放API),您无需使用后端签名,通道自身是安全的。


读取 API 网关签名方法


网关计算的签名保存在 Request 的 Header 中,Header 名称:X-Ca-Proxy-Signature

后端 HTTP 服务加签方法


签名计算的详细 demo(JAVA)请参照链接: https://github.com/aliyun/api-gateway-demo-sign-backend-java
签名计算方法步骤如下:

组织参与加签的数据





secret 为绑定到 API 上的签名密钥

补充说明


  • [backcolor=transparent]Content-MD5
    Content-MD5 是指 Body 的 MD5 值,只有 HttpMethod 为 PUT 或者 POST 且 Body 为非 Form 表单时才计算 MD5,计算方式为:
    String content-MD5 = Base64.encodeBase64(MD5(bodyStream.getbytes(“UTF-8”)));

  • [backcolor=transparent]Headers
    Headers 指所有参与签名计算的 Header的Key、Value。参与签名计算的 Header 的 Key 从 Request Header 中读取,Key为:”X-Ca-Proxy-Signature-Headers”,多个 Key 用英文逗号分割。

  • [backcolor=transparent]Headers 组织方法:
    先对所有参与签名计算的 Header 的 Key 按照字典排序,然后将 Header 的 Key 转换成小写后按照如下方式拼接:
    String headers = HeaderKey1.toLowerCase() + “:” + HeaderValue1 + “\n”+ HeaderKey2.toLowerCase() + “:” + HeaderValue2 + “\n”+ … HeaderKeyN.toLowerCase() + “:” + HeaderValueN + “\n”

  • [backcolor=transparent]Url
    Url指 Path+Query+Body 中 Form 参数,组织方法:如果有 Query 或 Form 参数则加 [backcolor=transparent]?,然后对 Query+Form 参数按照字典对 Key 进行排序后按照如下方法拼接,如果没有 Query 或 Form 参数,则 Url = Path


展开
收起
轩墨 2017-10-26 11:51:26 2576 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载
机器学习在互联网后端技术中的应用 立即下载
低代码开发师(初级)实战教程 立即下载