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

使用托管身份从Hashicorp Vault获取Azure App Service密钥报Missing Role错误

错误原因
  • Windows环境下curl命令语法错误:Windows cmd/PowerShell不支持单引号作为JSON字符串的包裹符,你提交的请求体无法被正确解析,Vault读取不到role字段,直接返回Missing Role错误。
  • JWT校验规则不匹配:
    • 角色配置中的bound_audiences值为https://management.azure.com/(末尾带斜杠),但实际JWT的aud字段值为https://management.azure.com(无末尾斜杠),校验不通过
    • 角色配置中bound_claims下的tid值末尾带斜杠,实际JWT的tid字段无斜杠,校验不通过
  • 访问IP段限制不匹配:角色配置的token_bound_cidrs为10.0.0.0/16,你本地测试用的127.0.0.1不在允许的IP段范围内,即使前面校验通过也无法获取令牌。
解决方案

步骤1:修改角色配置payload.json

调整不匹配的配置项,测试阶段可先移除IP限制:

{
    "bound_audiences": "https://management.azure.com",
    "bound_claims": {
        "idp": "https://sts.windows.net/4a95f16f-35ba-4a52-9cb3-7f300cdc0c60/",
        "oid": "8d2b99fb-f4f4-4afb-9ee3-276891f40a65",
        "tid": "4a95f16f-35ba-4a52-9cb3-7f300cdc0c60"
    },
    "bound_subject": "8d2b99fb-f4f4-4afb-9ee3-276891f40a65",
    "claim_mappings": {
        "appid": "application_id",
        "xms_mirid": "resource_id"
    },
    "policies": ["sqlconnection"],
    "role_type": "jwt",
    "token_max_ttl": "24h",
    "user_claim": "sub"
}

重新执行创建角色的curl命令更新配置。

步骤2:调整Windows下的登录curl命令

用双引号包裹JSON,内部的双引号转义:

curl --request POST --data "{\"jwt\": \"替换为实际JWT\", \"role\": \"webapp-role\"}" http://127.0.0.1:8200/v1/auth/jwt/login

也可以将请求体写入单独的JSON文件调用,避免转义问题:

curl --request POST --data @login.json http://127.0.0.1:8200/v1/auth/jwt/login

其中login.json内容为:

{
    "jwt": "替换为实际JWT",
    "role": "webapp-role"
}

步骤3:后续上线配置调整

上线到Azure App Service时,再根据实际应用所在的VNet网段,将对应CIDR添加到token_bound_cidrs配置中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:12:00