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

Azure Databricks OAuth Token生成正常但调用模型服务API报401错误求助

问题:Azure Databricks OAuth令牌生成成功但调用模型服务API返回401错误

我正尝试为Azure Databricks工作区生成OAuth令牌,以访问生产环境中的模型服务API。使用以下代码可成功生成令牌,但调用API时持续收到401错误,错误信息为"Missing authorization details for accessing model serving endpoints"。

生成令牌的代码

import requests

# Azure Databricks and Managed Service Principal Details
client_id = "XXXX"  # Application ID
client_secret = "XXXXX"  # Client Secret
workspace_url = "XXXXXX"  # Databricks workspace URL

# Databricks-specific endpoint URL for token generation
token_endpoint_url = f"{workspace_url}/oidc/v1/token"

# Function to get OAuth access token with all-apis scope
def get_workspace_oauth_token():
    response = requests.post(
        token_endpoint_url,
        auth=(client_id, client_secret),
        data={
            "grant_type": "client_credentials",
            "scope": "all-apis"
        }
    )
    response.raise_for_status()  # Check for request errors
    return response.json(), response.json().get("access_token")

# Generate the access token
response, access_token = get_workspace_oauth_token()
print("OAuth token generated successfully:", access_token)

API调用错误响应

调用模型服务API时收到的响应:

{
    "error_code": 401,
    "message": "Missing authorization details for accessing model serving endpoints"
}

补充说明:已为Databricks中的服务主体分配权限,使用all-apis scope覆盖模型服务端点。


排查建议

  • 检查请求头格式:调用API时必须将令牌放在Authorization请求头中,格式为Bearer <access_token>,注意不要遗漏Bearer前缀,也不要在前缀和令牌之间多加空格。
  • 解析令牌验证权限:用本地JWT解析工具解码生成的令牌,查看scp字段是否包含all-apis,确认权限范围确实生效。
  • 确认服务主体权限同步:检查服务主体是否被添加到拥有Model Serving Admin或Model Serving User权限的工作区组中,部分情况下权限分配需要等待1-2分钟才能同步生效。
  • 核对API端点URL:确保调用的模型服务端点URL与工作区区域匹配,没有拼写错误(比如区域前缀、端点路径)。
  • 检查令牌有效期:查看令牌的exp字段对应的过期时间,确认令牌未过期,过期令牌会直接导致401错误。
  • 测试个人访问令牌(PAT):尝试生成Databricks个人访问令牌调用API,排除OIDC流程本身的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:30:07