You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在APIM中验证Authorization头传递的HMAC-SHA256令牌?

Azure API Management 配置HMAC-SHA256令牌验证

你当前使用的validate-jwt策略仅适用于OpenID标准的JWT令牌验证,要验证基于Client ID和Client Secret生成的HMAC-SHA256令牌,需要替换为validate-signature策略,并结合变量提取逻辑完成验证,具体配置如下:

完整Policy配置示例

<policies>
    <inbound>
        <base />
        <!-- 提取Authorization头中的令牌(假设格式为Bearer <token>,按需调整前缀) -->
        <set-variable name="rawToken" value="@(context.Request.Headers.GetValueOrDefault("Authorization", "").Replace("Bearer ", ""))" />
        <!-- 执行HMAC-SHA256签名验证 -->
        <validate-signature algorithm="HMAC-SHA256" rule="all">
            <!-- 使用APIM命名值存储的Client Secret(避免硬编码) -->
            <key>{{ClientSecret}}</key>
            <!-- 与令牌生成端一致的签名原始内容:如果令牌是对特定请求内容签名,替换为对应内容(如请求路径+时间戳) -->
            <content>@(context.Variables.GetValueOrDefault<string>("rawToken"))</content>
            <!-- 从请求中提取的待验证令牌 -->
            <signature>@(context.Variables.GetValueOrDefault<string>("rawToken"))</signature>
            <failed-validation-httpcode>401</failed-validation-httpcode>
            <failed-validation-error-message>Authorization Failed. Invalid HMAC-SHA256 Token</failed-validation-error-message>
        </validate-signature>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

关键配置说明

  1. 令牌提取:通过set-variable从Authorization头中剥离前缀(如Bearer ),得到原始令牌值。
  2. 签名验证核心:
    • algorithm指定为HMAC-SHA256,与令牌生成算法匹配;
    • key引用APIM的命名值(Named Values)存储的Client Secret,禁止硬编码敏感信息;
    • content和signature需与令牌生成逻辑对齐:
      • 如果令牌是直接对某个字符串用Client Secret签名的结果,两者设为同一令牌值;
      • 如果令牌是对请求元数据(如URL、时间戳、Body)签名的结果,content需设置为生成令牌时的原始签名内容。
  3. 错误处理:验证失败时返回401状态码和自定义提示信息。

注意事项

  • 必须确保验证端的签名算法、密钥、签名内容与令牌生成端完全一致,否则验证会失败;
  • 若令牌包含过期时间等额外校验逻辑,可添加set-variable结合choose策略补充验证;
  • Client Secret需通过APIM门户的「命名值」功能配置,配置后用{{ClientSecret}}引用,保障敏感信息安全。

内容的提问来源于stack exchange,提问作者Sindhu1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:47:22