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

Azure登录Token端点不接受原始JSON请求体的技术咨询

解决Azure AD v2.0令牌端点不支持原始JSON请求体的问题

问题核心

调用https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token获取Azure Key Vault访问令牌时,用原始JSON请求体({ "grant_type":"client_credentials" })会返回400错误,提示缺少grant_type参数。本质原因是该端点仅支持application/x-www-form-urlencoded格式的请求体,不接受原始JSON格式。

替代实现方案

方案1:用表单编码格式提交请求体

把请求参数整理成URL编码的键值对作为请求体发送,同时设置请求头Content-Type: application/x-www-form-urlencoded。
示例请求体:

grant_type=client_credentials&client_id=你的应用ID&client_secret=你的应用密钥&scope=https%3A%2F%2Fvault.azure.net%2F.default

注:scope需按实际需求调整,Azure Key Vault的默认权限范围为https://vault.azure.net/.default

方案2:借助Azure SDK简化调用

如果是代码实现,直接用官方Azure SDK即可,SDK会自动处理请求格式,无需手动构造:

  • .NET环境:使用Azure.Identity库的ClientSecretCredential
    var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
    var client = new SecretClient(new Uri("https://你的密钥库.vault.azure.net/"), credential);
    
  • Python环境:使用azure-identity和azure-keyvault-secrets库
    from azure.identity import ClientSecretCredential
    from azure.keyvault.secrets import SecretClient
    
    credential = ClientSecretCredential(tenant_id, client_id, client_secret)
    client = SecretClient(vault_url="https://你的密钥库.vault.azure.net/", credential=credential)
    

方案3:Postman中正确配置请求

在Postman里选择Body标签下的x-www-form-urlencoded选项,添加以下键值对参数:

  • grant_type:client_credentials
  • client_id:你的应用程序ID
  • client_secret:你的应用程序密钥
  • scope:https://vault.azure.net/.default
    Postman会自动将请求头Content-Type设置为application/x-www-form-urlencoded,无需手动修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:45:52