错误 401:使用 Databricks 上的 OAuth 令牌“缺少访问模型服务端点的授权详细信息”

问题描述 投票:0回答:1

我正在尝试为我的 Azure Databricks 工作区生成 OAuth 令牌,以访问生产中的模型服务 API。我使用的代码成功生成了令牌,但当我尝试使用它时,我不断收到 401 错误,并显示消息“缺少访问模型服务端点的授权详细信息”。

这是我正在使用的代码:

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)

OAuth 令牌的生成似乎没有任何问题。我还确保我的服务主体拥有访问 Databricks 工作区中的模型服务端点所需的权限。

但是,当使用此令牌调用模型服务 API 端点时,我收到以下响应:

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

其他背景: 我已经向 Databricks 中的服务主体分配了权限。 我使用 all-apis 范围来覆盖模型服务端点。 有没有人遇到过这个问题或者对导致 401 错误的原因有建议?

databricks azure-databricks mlflow
1个回答
0
投票

该错误表明您在检索令牌后提供的授权详细信息无效。

以下是如何使用您拥有的令牌发出请求的几种方法。

在 python 中使用下面的示例代码。

import requests,json
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {access_token}"
}
body = {
  "dataframe_split": {
    "columns": ["prompt"],
    "data": [["Hello, I'm a language model,"]]
  }
}

response = requests.post(url, headers=headers, json=body)
response.json()

根据您的模型给出身体,并确保您给出的

Authorization
Bearer <token>

输出:

enter image description here

接下来,在任何 Api 请求工具中。

enter image description here

Header
选项卡中添加
Authorization
并将值设置为
Bearer <token>
,如果您不提及承载者,则会给出401错误,这意味着您的授权不正确。

© www.soinside.com 2019 - 2024. All rights reserved.