使用 OAuth (OAuth U2M) 通过用户帐户对 Azure Databricks 的访问进行身份验证
Azure Databricks 使用 OAuth 用户到计算机 (U2M) 身份验证来代表用户启用对 Azure Databricks 帐户和工作区资源的 CLI 和 API 访问。 在用户最初登录并同意 OAuth 身份验证请求后,系统会向参与工具或 SDK 提供 OAuth 令牌,以便从那时起代表用户执行基于令牌的身份验证。 OAuth 令牌的有效期为一小时,之后所涉及的工具或 SDK 将在后台自动尝试获取有效期同样为一小时的新令牌。
Azure Databricks 支持两种使用 OAuth 对用户帐户的访问进行身份验证的方法:
- 大多数情况下,使用 Databricks 统一客户端身份验证支持。 如果使用特定的 Azure Databricks SDK(如 Databricks Terraform SDK)和工具,请使用这种简化的方法。 Databricks 统一客户端身份验证中列出了支持的工具和 SDK。
- 手动,通过直接生成 OAuth 代码验证器/质询对和授权码,并使用它们创建将在配置中提供的初始 OAuth 令牌。 当不使用 Databricks 统一客户端身份验证支持的 API 时,请使用此方法。 有关更多详细信息,请参阅:手动生成和使用 OAuth 用户到计算机 (U2M) 身份验证的访问令牌。
使用 Databricks 统一客户端身份验证进行 U2M 身份验证
注意
在开始配置身份验证之前,请查看工作区对象上特定类别的操作的 ACL 权限,并确定帐户是否具有所需的访问级别。 有关更多详细信息,请参阅访问控制列表。
若要使用支持统一客户端身份验证的 Azure Databricks SDK 和工具执行 OAuth U2M 身份验证,请在代码中集成以下内容:
环境
若要通过工具或 SDK 对特定 Azure Databricks 身份验证类型使用环境变量,请参阅对 Azure Databricks 资源的访问进行身份验证,或该工具或 SDK 的相关文档。 另请参阅客户端统一身份验证的环境变量和字段和客户端统一身份验证的默认方法。
对于帐户级操作,请设置以下环境变量:
DATABRICKS_HOST
,设置为 Azure Databricks 帐户控制台 URL 的值,即https://accounts.databricks.azure.cn
。DATABRICKS_ACCOUNT_ID
对于工作区级操作,请设置以下环境变量:
DATABRICKS_HOST
,设置为 Azure Databricks 每工作区 URL 的值,例如https://adb-1234567890123456.7.databricks.azure.cn
。
配置文件
在 .databrickscfg
文件中使用以下字段创建或标识 Azure Databricks 配置文件。 如果创建配置文件,请将占位符替换为相应值。 若要通过工具或 SDK 使用配置文件,请参阅对 Azure Databricks 资源的访问进行身份验证,或该工具或 SDK 的相关文档。 另请参阅客户端统一身份验证的环境变量和字段和客户端统一身份验证的默认方法。
对于帐户级操作,请在 .databrickscfg
文件中设置以下值。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn
:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
对于工作区级操作,请在 .databrickscfg
文件中设置以下值。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
CLI
对于 Databricks CLI,请使用以下选项运行 databricks auth login
命令:
--host <account-console-url> --account-id <account-id>
(适用于 Azure Databricks 帐户级别操作)。--host <workspace-url>
(适用于 Azure Databricks 工作区级别操作)。
运行此命令后,请按照 Web 浏览器中的说明登录到 Azure Databricks 帐户或工作区。
有关更多详细信息,请参阅使用 Databricks CLI 进行 OAuth U2M 身份验证。
连接
注意
以下 Databricks Connect 版本支持 OAuth U2M 身份验证:
- 对于 Python,适用于 Databricks Runtime 13.1 及更高版本的 Databricks Connect。
- 对于 Scala,适用于 Databricks Runtime 13.3 LTS 及更低版本的 Databricks Connect。
对于 Databricks Connect,可以执行以下操作之一:
- 按照本文“配置文件”部分所述为 Azure Databricks 工作区级别操作设置
.databrickscfg
文件中的值。 此外,将配置文件中的cluster_id
环境变量设置为每工作区 URL,例如https://adb-1234567890123456.7.databricks.azure.cn
。 - 按照本文“环境”部分所述为 Azure Databricks 工作区级别操作设置环境变量。 此外,将
DATABRICKS_CLUSTER_ID
环境变量设置为每工作区 URL,例如https://adb-1234567890123456.7.databricks.azure.cn
。
.databrickscfg
文件中的值始终优先于环境变量。
要使用 .databrickscfg
文件中的这些环境变量或值以初始化 Databricks Connect 客户端,请参阅适用于 Databricks Connect 的计算配置。
VS Code
对于适用于 Visual Studio Code 的 Databricks 扩展,请执行以下操作:
- 在“配置”窗格中单击“配置 Databricks”。
- 在“命令面板”中,对于“Databricks 主机”,请输入每个工作区的 URL(例如
https://adb-1234567890123456.7.databricks.azure.cn
),然后按Enter
。 - 选择 OAuth(用户到计算机)。
- 在 Web 浏览器中完成屏幕上的说明,以使用 Azure Databricks 帐户完成身份验证并允许 all-apis 访问。
有关更多详细信息,请参阅使用 Databricks CLI 进行 OAuth U2M 身份验证。
Terraform
注意
尚不支持 OAuth U2M 身份验证。
Python
对于帐户级别和工作区级别的操作,必须在运行 Python 代码之前使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json
中生成并缓存所需的 OAuth 令牌:
配置 Databricks 帐户级别操作
databricks auth login --host <account-console-url> --account-id <account-id>
替换以下占位符:
- 将
<account-console-url>
替换为https://accounts.databricks.azure.cn
值。 (不要将其设置为 Azure Databricks 工作区 URL 的值。) - 将
<account-id>
替换为 Azure Databricks 帐户的值。 请参阅查找帐户 ID。
注意
如果已有已设置 host
和 account_id
字段的 Azure Databricks 配置文件,则可以用 --profile <profile-name>
代替 --host <account-console-url> --account-id <account-id>
。
运行 auth login
命令后,系统会提示你将帐户登录 URL 和帐户 ID 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg
文件中现有配置文件的名称。 .databrickscfg
文件中任何具有相同名称的现有配置文件都会被覆盖。
如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Python 代码:
对于默认身份验证:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn
:
from databricks.sdk import AccountClient
a = AccountClient(
host = retrieveAccountConsoleUrl(),
account_id = retrieveAccountId()
)
# ...
配置 Databricks 工作区级别操作
databricks auth login --host <worskpace-url>
将占位符 <workspace-url>
替换为目标 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
。
注意
如果已有已设置 host
字段的现有 Azure Databricks 配置文件,则可以用 --profile <profile-name>
代替 --host <workspace-url>
。
运行 auth login
命令后,系统会提示你将工作区 URL 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg
文件中现有配置文件的名称。 .databrickscfg
文件中任何具有相同名称的现有配置文件都会被覆盖。
如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Python 代码:
对于默认身份验证:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(host = retrieveWorkspaceUrl())
# ...
有关借助使用 Python 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:
- 设置适用于 Python 的 Databricks Connect 客户端
- 适用于 Visual Studio Code 的 Databricks 扩展的身份验证设置
- 使用 Azure Databricks 帐户或工作区对 Databricks SDK for Python 进行身份验证
Java
对于帐户级别和工作区级别的操作,必须在运行 Java 代码之前使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上用户主文件夹的 .databricks/token-cache.json
路径中生成并缓存必要的 OAuth 令牌:
配置 Databricks 帐户级别操作
databricks auth login --host <account-console-url> --account-id <account-id>
替换以下占位符:
- 将
<account-console-url>
替换为https://accounts.databricks.azure.cn
值。 (不要将其设置为 Azure Databricks 工作区 URL 的值。) - 将
<account-id>
替换为 Azure Databricks 帐户的值。 请参阅查找帐户 ID。
注意
如果已有已设置 host
和 account_id
字段的 Azure Databricks 配置文件,则可以用 --profile <profile-name>
代替 --host <account-console-url> --account-id <account-id>
。
运行 auth login
命令后,系统会提示你将帐户登录 URL 和帐户 ID 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg
文件中现有配置文件的名称。 .databrickscfg
文件中任何具有相同名称的现有配置文件都会被覆盖。
如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Java 代码:
对于默认身份验证:
import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn
:
import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
.setHost(retrieveAccountConsoleUrl())
.setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...
配置 Databricks 工作区级别操作
对于工作区级别操作,应在运行 Java 代码之前先使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json
中生成并缓存所需的 OAuth 令牌:
databricks auth login --host <worskpace-url>
将占位符 <workspace-url>
替换为目标 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
。
注意
如果已有已设置 host
字段的现有 Azure Databricks 配置文件,则可以用 --profile <profile-name>
代替 --host <workspace-url>
。
运行 auth login
命令后,系统会提示你将工作区 URL 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg
文件中现有配置文件的名称。 .databrickscfg
文件中任何具有相同名称的现有配置文件都会被覆盖。
如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Java 代码:
对于默认身份验证:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
:
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
.setHost(retrieveWorkspaceUrl())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...
有关借助使用 Java 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:
- 设置适用于 Scala 的 Databricks Connect 客户端(适用于 Scala 的 Databricks Connect 客户端使用随附的 Databricks SDK for Java 进行身份验证)
- 使用 Azure Databricks 帐户或工作区对 Databricks SDK for Java 进行身份验证
Go
对于帐户级别和工作区级别的操作,必须在运行 Go 代码之前使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json
中生成并缓存所需的 OAuth 令牌:
配置 Databricks 帐户级别操作
databricks auth login --host <account-login-url> --account-id <account-id>
替换以下占位符:
- 将
<account-console-url>
替换为https://accounts.databricks.azure.cn
值。 (不要将其设置为 Azure Databricks 工作区 URL 的值。) - 将
<account-id>
替换为 Azure Databricks 帐户的值。 请参阅查找帐户 ID。
注意
如果已有已设置 host
和 account_id
字段的 Azure Databricks 配置文件,则可以用 --profile <profile-name>
代替 --host <account-console-url> --account-id <account-id>
。
运行 auth login
命令后,系统会提示你将帐户登录 URL 和帐户 ID 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg
文件中现有配置文件的名称。 .databrickscfg
文件中任何具有相同名称的现有配置文件都会被覆盖。
如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Go 代码:
对于默认身份验证:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.databricks.azure.cn
:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
}))
// ...
配置 Databricks 工作区级别操作
对于工作区级别操作,应在运行 Go 代码之前先使用 Databricks CLI 运行以下命令。 此命令指示 Databricks CLI 在计算机上的用户主文件夹内的路径 .databricks/token-cache.json
中生成并缓存所需的 OAuth 令牌:
databricks auth login --host <worskpace-url>
将占位符 <workspace-url>
替换为目标 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
。
注意
如果已有已设置 host
字段的现有 Azure Databricks 配置文件,则可以用 --profile <profile-name>
代替 --host <workspace-url>
。
运行 auth login
命令后,系统会提示你将工作区 URL 保存为 Azure Databricks 配置文件。 出现提示时,请在输入新配置文件或 .databrickscfg
文件中现有配置文件的名称。 .databrickscfg
文件中任何具有相同名称的现有配置文件都会被覆盖。
如果出现提示,请完成 Web 浏览器的屏幕说明以完成登录。 然后使用类似于以下代码片段之一的 Go 代码:
对于默认身份验证:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn
:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
}))
// ...
有关借助使用 Go 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅使用 Azure Databricks 帐户或工作区对 Databricks SDK for Go 进行身份验证。
手动生成和使用 OAuth 用户到计算机 (U2M) 身份验证的访问令牌
注意
本节面向第三方工具或服务的用户,这些工具或服务不适用于 Databricks 客户端统一身份验证标准。
如果出于某种原因,必须手动生成、刷新或使用 Azure Databricks OAuth 访问令牌进行 OAuth U2M 身份验证,请按照本部分中的说明进行操作。
步骤 1:生成 OAuth 代码验证器和代码质询对
若要手动生成和使用 OAuth U2M 身份验证的访问令牌,必须先拥有一个 OAuth 代码验证器和从该代码验证器派生的 OAuth 代码质询。 在步骤 2 中使用代码质询来生成 OAuth 授权代码。 在步骤 3 中使用代码验证器和授权代码生成 OAuth 访问令牌。
注意
虽然从技术上讲,可以将未编码的纯文本字符串用于代码验证器和代码质询,但 Databricks 强烈建议遵循 OAuth 标准来生成代码验证器和代码质询。
具体而言,代码验证程序应是使用集 A-Z
、a-z
、0-9
和 -._~
标点符号(连字符、句点、下划线和波浪号)的加密随机字符串,长度为 43 到 128 个字符。 代码质询应是代码验证程序 SHA256 哈希的 Base64 URL 编码字符串。 有关详细信息,请参阅授权请求。
可以运行以下 Python 脚本来快速生成一对唯一的代码验证器和代码质询。 虽然可以多次重复使用这对生成的代码验证器和代码质询,但 Databricks 建议每次手动生成 OAuth U2M 身份验证的访问令牌时,都生成一对新的代码验证器和代码质询。
import uuid, hashlib, base64
# Generate a UUID.
uuid1 = uuid.uuid4()
# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()
# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1
# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')
# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')
# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier: {code_verifier}")
print(f"code_challenge: {code_challenge}")
步骤 2:生成授权代码
使用 OAuth 授权代码生成 Azure Databricks OAuth 访问令牌。 授权代码会在用于生成 Azure Databricks OAuth 访问令牌后立即过期。 授权代码的范围取决于其生成自何种级别。 可以在 Azure Databricks 帐户级别或工作区级别生成授权代码,如下所示:
- 若要在 Azure Databricks 用户帐户有权访问的帐户和工作区中调用帐户级别和工作区级别的 REST API,请在帐户级别生成授权代码。
- 若要仅在用户帐户有权访问的一个工作区中调用 REST API,可以仅为该工作区在工作区级别生成授权代码。
生成帐户级授权代码
作为帐户管理员,登录到帐户控制台。
单击右上角用户名旁边的向下箭头。
复制你的帐户 ID。
在 Web 浏览器的地址栏中,浏览到以下 URL: 为清楚起见,添加了换行符。 URL 不得包含以下换行符。
在以下 URL 中,替换以下内容:
- 将
<account-id>
替换为复制的帐户 ID。 - 将
<redirect-url>
替换为本地计算机的重定向 URL,例如http://localhost:8020
。 - 将
<state>
替换为一些可用于验证授权代码完整性的纯文本字符串。 - 将
<code-challenge>
替换为步骤 1 中生成的代码质询。
https://accounts.databricks.azure.cn/oidc/accounts/<account-id>/v1/authorize ?client_id=databricks-cli &redirect_uri=<redirect-url> &response_type=code &state=<state> &code_challenge=<code-challenge> &code_challenge_method=S256 &scope=all-apis+offline_access
- 将
出现提示时,请按照屏幕上的说明登录到 Azure Databricks 帐户。
在 Web 浏览器的地址栏中,复制授权代码。 授权代码是 URL 中
code=
和&
字符之间的完整字符串。 例如,以下 URL 中的授权代码为dcod...7fe6
:http://localhost:8020/?code=dcod...7fe6&state=<state>
应直观地确认此响应 URL 中的
<state>
值与请求 URL 中提供的state
值匹配,以验证此授权代码的完整性。 如果值不同,则不应使用此授权代码,因为可能遭到入侵。跳到生成帐户级访问令牌。
生成工作区级授权代码
在 Web 浏览器的地址栏中,浏览到以下 URL: 为清楚起见,添加了换行符。 URL 不得包含以下换行符。
在以下 URL 中,替换以下内容:
- 将
<databricks-instance>
替换为 Azure Databricks<databricks-instance>
(例如adb-1234567890123456.7.databricks.azure.cn
)。 - 将
<redirect-url>
替换为本地计算机的重定向 URL,例如http://localhost:8020
。 - 将
<state>
替换为一些可用于验证授权代码完整性的纯文本字符串。 - 将
<code-challenge>
替换为步骤 1 中生成的代码质询。
https://<databricks-instance>/oidc/v1/authorize ?client_id=databricks-cli &redirect_uri=<redirect-url> &response_type=code &state=<state> &code_challenge=<code-challenge> &code_challenge_method=S256 &scope=all-apis+offline_access
- 将
出现提示时,请按照屏幕上的说明登录到 Azure Databricks 工作区。
在 Web 浏览器的地址栏中,复制授权代码。 授权代码是 URL 中
code=
和&
字符之间的完整字符串。 例如,以下 URL 中的授权代码为dcod...7fe6
:http://localhost:8020/?code=dcod...7fe6&state=<state>
应直观地确认此响应 URL 中的
<state>
值与请求 URL 中提供的state
值匹配,以验证此授权代码的完整性。 如果值不同,则不应使用此授权代码,因为可能遭到入侵。
步骤 3:使用授权代码生成 OAuth 访问令牌
使用上一步中的 OAuth 授权代码生成 Azure Databricks OAuth 访问令牌,如下所示:
- 若要在 Azure Databricks 用户帐户有权访问的帐户和工作区中调用帐户级别和工作区级别的 REST API,请使用帐户级别授权代码在帐户级别生成访问令牌。
- 若要在用户帐户有权访问的一个工作区中调用 REST API,可以使用工作区级授权代码仅为该工作区在工作区级别生成访问令牌。
生成帐户级访问令牌
使用客户端(如
curl
)和帐户级授权代码生成帐户级 OAuth 访问令牌。 在以下curl
调用中,替换以下占位符:- 将
<account-id>
替换为步骤 2 中的帐户 ID。 - 将
<redirect-url>
替换为步骤 2 中的重定向 URL。 - 将
<code-verifier>
替换为步骤 1 中生成的代码验证器。 - 将
<authorization-code>
替换为在步骤 2 中生成的帐户级授权代码。
curl --request POST \ https://accounts.databricks.azure.cn/oidc/accounts/<account-id>/v1/token \ --data "client_id=databricks-cli" \ --data "grant_type=authorization_code" \ --data "scope=all-apis offline_access" \ --data "redirect_uri=<redirect-url>" \ --data "code_verifier=<code-verifier>" \ --data "code=<authorization-code>"
- 将
在响应中,复制帐户级 OAuth 访问令牌。 访问令牌是
access_token
对象中的完整字符串。 例如,以下响应中的访问令牌为eyJr...Dkag
:{ "access_token": "eyJr...Dkag", "refresh_token": "doau...f26e", "scope": "all-apis offline_access", "token_type": "Bearer", "expires_in": 3600 }
此访问令牌将在一小时内过期。 若要生成新的访问令牌,请重复步骤 1 中的此过程。
生成工作区级访问令牌
使用客户端(如
curl
)和工作区授权代码生成工作区级 OAuth 访问令牌。 在以下curl
调用中,替换以下占位符:- 将
<databricks-instance>
替换为 Azure Databricks<databricks-instance>
(例如adb-1234567890123456.7.databricks.azure.cn
)。 - 将
<redirect-url>
替换为步骤 2 中的重定向 URL。 - 将
<code-verifier>
替换为步骤 1 中生成的代码验证器。 - 将
<authorization-code>
替换为在步骤 2 中生成的工作区级授权代码。
curl --request POST \ https://<databricks-instance>/oidc/v1/token \ --data "client_id=databricks-cli" \ --data "grant_type=authorization_code" \ --data "scope=all-apis offline_access" \ --data "redirect_uri=<redirect-url>" \ --data "code_verifier=<code-verifier>" \ --data "code=<authorization-code>"
- 将
在响应中,复制工作区级 OAuth 访问令牌。 访问令牌是
access_token
对象中的完整字符串。 例如,以下响应中的访问令牌为eyJr...Dkag
:{ "access_token": "eyJr...Dkag", "refresh_token": "doau...f26e", "scope": "all-apis offline_access", "token_type": "Bearer", "expires_in": 3600 }
此访问令牌将在一小时内过期。 若要生成新的访问令牌,请重复步骤 1 中的此过程。
步骤 4:调用 Databricks REST API
根据访问令牌的作用域,使用帐户级或工作区级 OAuth 访问令牌向 Azure Databricks 帐户级 REST API 和工作区级 REST API 进行身份验证。 Azure Databricks 用户帐户必须是帐户管理员,才能调用帐户级 REST API。
帐户级 REST API 请求示例
此示例使用 curl
和 Bearer
身份验证来获取与帐户关联的所有工作区的列表。
- 将
<oauth-access-token>
替换为帐户级 OAuth 访问令牌。 - 将
<account-id>
替换为你的帐户 ID。
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.databricks.azure.cn/api/2.0/accounts/<account-id>/workspaces"
工作区级 REST API 请求示例
此示例使用 curl
和 Bearer
身份验证来列出指定工作区中的所有可用群集。
- 将
<oauth-access-token>
替换为帐户级或工作区级 OAuth 访问令牌。 - 将
<databricks-instance>
替换为 Azure Databricks<databricks-instance>
(例如adb-1234567890123456.7.databricks.azure.cn
)。
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"