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

如何将颁发者签名密钥存储在Key Vault并通过APIM策略验证JWT?

实现步骤

1. 在Azure Key Vault中存储签名密钥

  • 登录Azure门户,进入你的Key Vault实例
  • 左侧菜单选择「机密」,点击「生成/导入」
  • 填写机密名称(比如jwt-signing-key),将签名密钥值填入「值」字段,按需配置其他选项后点击「创建」
  • 配置Key Vault访问权限:
    • 给APIM实例分配系统分配身份:进入APIM实例 → 「身份」→ 「系统分配」→ 开启状态,保存后复制生成的对象ID
    • 回到Key Vault → 「访问策略」→ 「添加访问策略」
    • 权限选择「机密权限」下的「获取」,主体选择刚才复制的APIM身份对象ID,完成添加

2. 在APIM中配置Key Vault机密引用

  • 进入APIM实例 → 「机密」→ 「添加」
  • 选择「从Key Vault导入」,目标Key Vault实例,再选中刚创建的jwt-signing-key机密,点击「创建」

3. 修改APIM验证JWT策略

替换原硬编码密钥的策略,改为引用Key Vault机密的版本:

<policies>
    <inbound>
        <base />
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized">
            <issuer-signing-keys>
                <key>{{jwt-signing-key}}</key>
            </issuer-signing-keys>
            <!-- 可选:按需添加颁发者、受众验证规则 -->
            <!-- <audiences>
                <audience>你的受众标识</audience>
            </audiences>
            <issuers>
                <issuer>你的颁发者地址</issuer>
            </issuers> -->
        </validate-jwt>
    </inbound>
</policies>

灵活处理方案:先获取密钥再验证

如果需要动态选择密钥等场景,可先通过get-secret将密钥存入变量,再在验证逻辑中引用:

<policies>
    <inbound>
        <base />
        <get-secret secret-identifier="https://你的密钥保管库名称.vault.azure.net/secrets/jwt-signing-key" output-variable-name="jwtKey" />
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized">
            <issuer-signing-keys>
                <key>@((string)context.Variables["jwtKey"])</key>
            </issuer-signing-keys>
        </validate-jwt>
    </inbound>
</policies>

4. 测试验证

  • 调用API时携带有效JWT令牌,APIM会自动从Key Vault拉取签名密钥完成验证
  • 若令牌无效或密钥无法正常获取,将返回401 Unauthorized错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:30:49