OAuth 使用者對電腦 (U2M) 驗證
OAuth 使用者對計算機 (U2M) 驗證會使用即時人類登入和同意來驗證目標 Azure Databricks 使用者帳戶。 在使用者成功登入並同意 OAuth 驗證要求之後,系統會將 OAuth 令牌提供給參與工具或 SDK,以代表使用者執行令牌型驗證。 OAuth 令牌的存留期為 1 小時,之後所涉及的工具或 SDK 會進行自動背景嘗試,以取得也有效的新令牌一小時。
若要使用 Azure Databricks 設定 OAuth U2M 驗證,您必須設定下列相關聯的環境變數、 .databrickscfg
字段、Terraform 欄位或 Config
欄位:
- 針對帳戶作業或每個工作區 URL 的目標指定
https://accounts.azuredatabricks.net
為 的 Azure Databricks 主機,例如https://adb-1234567890123456.7.azuredatabricks.net
工作區作業。 - Azure Databricks 帳戶作業的 Azure Databricks 帳戶標識符。
若要使用 Azure Databricks 執行 OAuth U2M 驗證,請根據您的參與工具或 SDK,在程式代碼中整合下列專案。 請注意,視程式代碼呼叫的 Azure Databricks 作業而定,您不一定是 Azure Databricks 帳戶的系統管理員:
Environment
若要搭配工具或 SDK 針對特定 Azure Databricks 驗證類型使用環境變數,請參閱 Azure Databricks 工具和 API 的驗證,或工具或 SDK 的檔。 另請參閱用戶端統一驗證的環境變數和欄位,以及用戶端整合驗證的預設驗證方法。
針對 帳戶層級作業,請設定下列環境變數:
DATABRICKS_HOST
,設定為 Azure Databricks 帳戶主控台 URL 的值。https://accounts.azuredatabricks.net
DATABRICKS_ACCOUNT_ID
針對 工作區層級作業,請設定下列環境變數:
DATABRICKS_HOST
,設定為 Azure Databricks 每個工作區 URL 的值,例如https://adb-1234567890123456.7.azuredatabricks.net
。
設定檔
使用檔案.databrickscfg
中的下列欄位,建立或識別 Azure Databricks 組態配置檔。 如果您建立設定檔,請將佔位元取代為適當的值。 若要搭配工具或 SDK 使用設定檔,請參閱 Azure Databricks 工具和 API 的驗證,或工具或 SDK 的檔。 另請參閱用戶端統一驗證的環境變數和欄位,以及用戶端整合驗證的預設驗證方法。
針對 帳戶層級作業,請在您的 .databrickscfg
檔案中設定下列值。 在此情況下,Azure Databricks 帳戶主控台 URL 為 https://accounts.azuredatabricks.net
:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
針對 工作區層級作業,請在您的 .databrickscfg
檔案中設定下列值。 在此情況下,主機是 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
CLI
針對 Databricks CLI,使用下列選項執行 databricks auth login
命令:
- 針對 Azure Databricks 帳戶層級作業,
--host <account-console-url> --account-id <account-id>
。 - 針對 Azure Databricks 工作區層級作業,
--host <workspace-url>
。
執行此命令之後,請依照網頁瀏覽器中的指示登入您的 Azure Databricks 帳戶或工作區。
如需詳細資訊,請參閱 OAuth 使用者對電腦 (U2M) 驗證。
連線
注意
下列 Databricks Connect 版本支援 OAuth U2M 驗證:
- 針對 Python,Databricks Connect for Databricks Runtime 13.1 和更新版本。
- 針對 Scala,Databricks Connect for Databricks Runtime 13.3 LTS 和更新版本。
針對 Databricks Connect,您可以執行下列其中一項作業:
- 如本文的「配置檔」一節中所指定,為 Azure Databricks 工作區層級作業設定檔案
.databrickscfg
中的值。 此外,cluster_id
將設定檔中的環境變數設定為每個 工作區URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。 - 如本文的「環境」一節中所指定,設定 Azure Databricks 工作區層級作業 的環境變數。 此外,將
DATABRICKS_CLUSTER_ID
環境變數設定為每個 工作區 URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。
檔案 .databrickscfg
中的值一律優先於環境變數。
若要使用檔案 .databrickscfg
中的這些環境變數或值來初始化 Databricks Connect 用戶端,請參閱下列其中一項:
VS Code
針對 Visual Studio Code 的 Databricks 擴充功能,請執行下列動作:
- 在 [ 設定 ] 窗格中,按兩下 [ 設定 Databricks]。
- 在 [命令選擇區] 的 Databricks Host 中,輸入每個工作區的 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net
,然後按Enter
。 - 選取 [OAuth][用戶到計算機]。
- 完成網頁瀏覽器中的螢幕指示,以完成使用 Azure Databricks 帳戶進行驗證,並允許 所有 API 存取 。
如需詳細資訊,請參閱 設定 OAuth U2M 驗證。
Terraform
注意
尚不支援 OAuth U2M 驗證。
Python
針對 帳戶層級作業,您應該先使用 Databricks CLI 執行下列命令,再執行 Python 程式代碼。 此命令會指示 Databricks CLI 在機器上使用者主資料夾的路徑 .databricks/token-cache.json
中產生和快取必要的 OAuth 令牌:
databricks auth login --host <account-console-url> --account-id <account-id>
取代下列預留位置:
- 取代為
<account-console-url>
值https://accounts.azuredatabricks.net
。 (請勿將此設定為 Azure Databricks 工作區 URL 的值。 - 將 取代
<account-id>
為您的 Azure Databricks 帳戶值。 請參閱 尋找您的帳戶標識碼。
注意
如果您有現有的 Azure Databricks 組態設定檔 , host
且已設定 和 account_id
欄位,您可以使用 取代 --host <account-console-url> --account-id <account-id>
--profile <profile-name>
。
執行 auth login
命令之後,系統會提示您將帳戶登入 URL 和帳戶標識碼儲存為 Azure Databricks 組態設定檔。 出現提示時,請在檔案 .databrickscfg
中輸入新的或現有的配置檔名稱。 會覆寫檔案 .databrickscfg
中任何具有相同名稱的現有配置檔。
如果出現提示,請完成網頁瀏覽器的螢幕上指示以完成登入。 然後使用類似下列其中一個代碼段的 Python 程式代碼:
針對 預設驗證:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
針對直接設定(將 retrieve
佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 https://accounts.azuredatabricks.net
:
from databricks.sdk import AccountClient
a = AccountClient(
host = retrieveAccountConsoleUrl(),
account_id = retrieveAccountId()
)
# ...
針對 工作區層級作業,您應該先使用 Databricks CLI 執行下列命令,再執行 Python 程式代碼。 此命令會指示 Databricks CLI 在機器上使用者主資料夾的路徑 .databricks/token-cache.json
中產生和快取必要的 OAuth 令牌:
databricks auth login --host <worskpace-url>
以目標 Azure Databricks 個別工作區 URL 取代佔位元<workspace-url>
,例如 https://adb-1234567890123456.7.azuredatabricks.net
。
注意
如果您有已設定欄位的現有 Azure Databricks 組態設定檔host
,您可以使用 取代 --host <workspace-url>
--profile <profile-name>
。
執行 auth login
命令時,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態配置檔。 出現提示時,請在檔案 .databrickscfg
中輸入新的或現有的配置檔名稱。 會覆寫檔案 .databrickscfg
中任何具有相同名稱的現有配置檔。
如果出現提示,請完成網頁瀏覽器的螢幕上指示以完成登入。 然後使用類似下列其中一個代碼段的 Python 程式代碼:
針對 預設驗證:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
針對直接設定(將 retrieve
佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,主機是 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(host = retrieveWorkspaceUrl())
# ...
如需使用 Python 和實 作 Databricks 用戶端整合驗證之 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱:
- 設定適用於 Python 的 Databricks Connect 用戶端
- VS Code Databricks 延伸模組的驗證設定
- 使用 Azure Databricks 帳戶或工作區驗證適用於 Python 的 Databricks SDK
Java
針對 帳戶層級作業,您應該先使用 Databricks CLI 執行下列命令,再執行 Java 程式代碼。 此命令會指示 Databricks CLI 在機器上使用者主資料夾的路徑 .databricks/token-cache.json
中產生和快取必要的 OAuth 令牌:
databricks auth login --host <account-console-url> --account-id <account-id>
取代下列預留位置:
- 取代為
<account-console-url>
值https://accounts.azuredatabricks.net
。 (請勿將此設定為 Azure Databricks 工作區 URL 的值。 - 將 取代
<account-id>
為您的 Azure Databricks 帳戶值。 請參閱 尋找您的帳戶標識碼。
注意
如果您有現有的 Azure Databricks 組態設定檔 , host
且已設定 和 account_id
欄位,您可以使用 取代 --host <account-console-url> --account-id <account-id>
--profile <profile-name>
。
執行 auth login
命令之後,系統會提示您將帳戶登入 URL 和帳戶標識碼儲存為 Azure Databricks 組態設定檔。 出現提示時,請在檔案 .databrickscfg
中輸入新的或現有的配置檔名稱。 會覆寫檔案 .databrickscfg
中任何具有相同名稱的現有配置檔。
如果出現提示,請完成網頁瀏覽器的螢幕上指示以完成登入。 然後使用類似下列其中一個代碼段的 Java 程式代碼:
針對 預設驗證:
import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...
針對直接設定(將 retrieve
佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 https://accounts.azuredatabricks.net
:
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 CLI 執行下列命令,再執行 Java 程式代碼。 此命令會指示 Databricks CLI 在機器上使用者主資料夾的路徑 .databricks/token-cache.json
中產生和快取必要的 OAuth 令牌:
databricks auth login --host <worskpace-url>
以目標 Azure Databricks 個別工作區 URL 取代佔位元<workspace-url>
,例如 https://adb-1234567890123456.7.azuredatabricks.net
。
注意
如果您有已設定欄位的現有 Azure Databricks 組態設定檔host
,您可以使用 取代 --host <workspace-url>
--profile <profile-name>
。
執行 auth login
命令之後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態配置檔。 出現提示時,請在檔案 .databrickscfg
中輸入新的或現有的配置檔名稱。 會覆寫檔案 .databrickscfg
中任何具有相同名稱的現有配置檔。
如果出現提示,請完成網頁瀏覽器的螢幕上指示以完成登入。 然後使用類似下列其中一個代碼段的 Java 程式代碼:
針對 預設驗證:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
針對直接設定(將 retrieve
佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,主機是 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
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 進行驗證)
- 使用 Azure Databricks 帳戶或工作區驗證適用於 Java 的 Databricks SDK
Go
針對 帳戶層級作業,您應該先使用 Databricks CLI 執行下列命令,再執行 Go 程式代碼。 此命令會指示 Databricks CLI 在機器上使用者主資料夾的路徑 .databricks/token-cache.json
中產生和快取必要的 OAuth 令牌:
databricks auth login --host <account-login-url> --account-id <account-id>
取代下列預留位置:
- 取代為
<account-console-url>
值https://accounts.azuredatabricks.net
。 (請勿將此設定為 Azure Databricks 工作區 URL 的值。 - 將 取代
<account-id>
為您的 Azure Databricks 帳戶值。 請參閱 尋找您的帳戶標識碼。
注意
如果您有現有的 Azure Databricks 組態設定檔 , host
且已設定 和 account_id
欄位,您可以使用 取代 --host <account-console-url> --account-id <account-id>
--profile <profile-name>
。
執行 auth login
命令之後,系統會提示您將帳戶登入 URL 和帳戶標識碼儲存為 Azure Databricks 組態設定檔。 出現提示時,請在檔案 .databrickscfg
中輸入新的或現有的配置檔名稱。 會覆寫檔案 .databrickscfg
中任何具有相同名稱的現有配置檔。
如果出現提示,請完成網頁瀏覽器的螢幕上指示以完成登入。 然後使用類似下列其中一個代碼段的 Go 程式代碼:
針對 預設驗證:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
針對直接設定(將 retrieve
佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 https://accounts.azuredatabricks.net
:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
}))
// ...
針對 工作區層級作業,您應該先使用 Databricks CLI 執行下列命令,再執行 Go 程式代碼。 此命令會指示 Databricks CLI 在機器上使用者主資料夾的路徑 .databricks/token-cache.json
中產生和快取必要的 OAuth 令牌:
databricks auth login --host <worskpace-url>
以目標 Azure Databricks 個別工作區 URL 取代佔位元<workspace-url>
,例如 https://adb-1234567890123456.7.azuredatabricks.net
。
注意
如果您有已設定欄位的現有 Azure Databricks 組態設定檔host
,您可以使用 取代 --host <workspace-url>
--profile <profile-name>
。
執行 auth login
命令之後,系統會提示您將工作區 URL 儲存為 Azure Databricks 組態配置檔。 出現提示時,請在檔案 .databrickscfg
中輸入新的或現有的配置檔名稱。 會覆寫檔案 .databrickscfg
中任何具有相同名稱的現有配置檔。
如果出現提示,請完成網頁瀏覽器的螢幕上指示以完成登入。 然後使用類似下列其中一個代碼段的 Go 程式代碼:
針對 預設驗證:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
針對直接設定(將 retrieve
佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,主機是 Azure Databricks 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
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 工具和 SDK,將會自動產生、重新整理和使用 Azure Databricks OAuth 存取令牌,並視 OAuth U2M 驗證需要使用。
如果基於某些原因,您必須手動產生、重新整理或使用適用於 OAuth U2M 驗證的 Azure Databricks OAuth 存取令牌,請遵循本節中的指示。
步驟 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,您可以 只針對該工作區在工作區層級 產生授權碼。
產生帳戶層級授權碼
身為帳戶管理員,登入 帳戶控制台。
按兩下右上角使用者名稱旁邊的向下箭號。
複製您的帳戶 標識碼。
在網頁瀏覽器的網址列中,流覽至下列URL。 為了可讀性,已新增分行符號。 您的 URL 不得包含這些換行符。
在下列 URL 中,取代下列專案:
- 將取代
<account-id>
為您複製的 帳戶標識碼 。 <redirect-url>
取代為本機電腦的重新導向 URL, 例如http://localhost:8020
。- 將取代
<state>
為可用來驗證授權碼完整性的一些純文本字串。 - 將取代
<code-challenge>
為您在步驟 1 中產生的程式代碼挑戰。
https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/authorize ?client_id=databricks-cli &redirect_url=<redirect-url> &response_type=code &state=<state> &code_challenge=<code-challenge> &code_challenge_method=S256 &scope=all-apis+offline_access
- 將取代
出現提示時,請依照螢幕上的指示登入您的 Azure Databricks 帳戶。
在網頁瀏覽器的網址列中,複製授權碼。 授權碼是 URL 中字元
&
之間的code=
字元完整字串。 例如,下列 URL 中的授權碼為dcod...7fe6
:http://localhost:8020/?code=dcod...7fe6&state=<state>
您應該以可視化方式確認
<state>
此回應 URL 中的值符合state
您在要求 URL 中提供的值,以確認此授權碼的完整性。 如果值不同,您就不應該使用此授權碼,因為它可能會遭到入侵。直接跳到 產生帳戶層級存取令牌。
產生工作區層級授權碼
在網頁瀏覽器的網址列中,流覽至下列URL。 為了可讀性,已新增分行符號。 您的 URL 不得包含這些換行符。
在下列 URL 中,取代下列專案:
<databricks-instance>
取代為 Azure Databricks 工作區實例名稱,例如adb-1234567890123456.7.azuredatabricks.net
。<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 工作區。
在網頁瀏覽器的網址列中,複製授權碼。 授權碼是 URL 中字元
&
之間的code=
字元完整字串。 例如,下列 URL 中的授權碼為dcod...7fe6
:http://localhost:8020/?code=dcod...7fe6&state=<state>
您應該以可視化方式確認
<state>
此回應 URL 中的值符合state
您在要求 URL 中提供的值,以確認此授權碼的完整性。 如果值不同,您就不應該使用此授權碼,因為它可能會遭到入侵。
步驟 3:使用授權碼來產生 OAuth 存取令牌
您可以使用上一個步驟中的 OAuth 授權碼來產生 Azure Databricks OAuth 存取令牌,如下所示:
- 若要在 Azure Databricks 使用者帳戶可存取的帳戶和工作區內呼叫 帳戶層級 和 工作區層級 REST API,請使用帳戶層級授權碼在 帳戶層級產生存取令牌。
- 若要在您的使用者帳戶只能存取的一個工作區內呼叫 REST API,您可以使用工作區層級的授權碼, 只針對該工作區在工作區層級 產生存取令牌。
產生帳戶層級存取令牌
使用用戶端,例如
curl
與帳戶層級授權碼一起產生帳戶層級 OAuth 存取令牌。 在下列curl
呼叫中,取代下列佔位元:- 將取代
<account-id>
為步驟 2 中的 帳戶標識碼 。 - 將取代
<redirect-url>
為步驟 2 的重新導向 URL。 - 將取代
<code-verifier>
為您在步驟 1 中產生的程式代碼驗證器。 - 將取代
<authorization-code>
為您在步驟 2 中產生的帳戶層級授權碼。
curl --request POST \ https://accounts.azuredatabricks.net/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 工作區實例名稱,例如adb-1234567890123456.7.azuredatabricks.net
。- 將取代
<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>
。
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces"
範例工作區層級 REST API 要求
此範例 curl
會搭配驗證一起使用 Bearer
,以列出指定工作區中的所有可用叢集。
- 將取代
<oauth-access-token>
為帳戶層級或工作區層級 OAuth 存取令牌。 <databricks-instance>
取代為 Azure Databricks 工作區實例名稱,例如adb-1234567890123456.7.azuredatabricks.net
。
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"