您可以使用 OAuth 2.0 持有人權杖驗證來呼叫公開 HTTP API 的 Databricks 應用程式 (例如 FastAPI 或 Gradio 應用程式)。 此方法適用於您的本機開發環境、外部應用程式和其他 Azure Databricks 應用程式。
備註
此方法僅適用於公開 API 或端點的應用程式 (可使用路由存取 /api/ )。 對於僅提供使用者介面或背景處理的應用程式,您無法使用權杖驗證進行連線。
需求
若要使用權杖驗證連線到 Databricks 應用程式,您必須符合下列需求:
- 應用程式必須公開至少一個可使用路由存取
/api/的 API 端點。 - 您必須擁有
CAN USE該應用程序的權限。 請參閱 設定 Databricks 應用程式的許可權。 - 您必須能夠使用其中一個支援的驗證方法來產生 Azure Databricks 存取權杖。
身份驗證方法
備註
您無法使用 Azure Entra ID 權杖直接呼叫 Databricks 應用程式。 權杖同盟需要用戶端權杖交換步驟,而 Azure Databricks 不會在伺服器端執行此步驟。 若要使用 Azure Entra ID 權杖進行驗證,您必須先將其交換為 OAuth 權杖。 請參閱 使用身分提供者權杖進行驗證。
選擇符合您連線案例的驗證方法:
本地開發
若要從本機開發環境連線,請搭配使用者認證使用 Azure Databricks CLI 或 SDK。
使用CLI登入:
databricks auth login --host https://<workspace-url> --profile my-envAzure Databricks 建議使用 OAuth 使用者對機器 (U2M) 驗證。
產生存取令牌:
CLI
databricks auth token --profile my-envPython
from databricks.sdk.core import Config config = Config(profile="my-env") token = config.oauth_token().access_token
外部應用
若要從外部應用程式進行程式化存取,請使用具有機器對機器(M2M)憑證的服務主體驗證。 請參閱 使用 OAuth 授權服務主體存取 Azure Databricks。
建立服務主體並取得用戶端識別碼和密碼。 請參閱 服務主體。
使用 Azure Databricks SDK 產生存取權杖:
from databricks.sdk import WorkspaceClient import requests # Option 1: Explicit credentials wc = WorkspaceClient( host="https://<workspace-url>", client_id="<service-principal-client-id>", client_secret="<service-principal-client-secret>" ) # Option 2: Environment variables # Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET wc = WorkspaceClient() # Generate Bearer token headers = wc.config.authenticate()
從其他 Databricks 應用程式
當您從一個 Databricks 應用程式連線到另一個應用程式時,應用程式會使用其指派的服務主體自動處理驗證。
from databricks.sdk import WorkspaceClient
import requests
# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()
指定使用者授權的 OAuth 範圍
當您使用 Azure Databricks CLI 或搭配統一驗證的 SDK 時,如上一節所示,工具會自動要求基本 all-apis 範圍。 不過,如果您的應用程式使用 使用者授權,則必須使用自訂 OAuth 流程,手動要求具有其他範圍的存取權杖。
請確定您的存取權杖包含編輯使用者授權>設定的範圍。 如果權杖沒有必要的權限範圍,要求可能會失敗,並導致 401 或 403 錯誤。
例如,下列請求會明確要求具備sql、file.files和dashboards.genie範圍的存取權杖:
curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"
如需完整指示,請參閱 手動產生 OAuth U2M 存取權杖。
將要求傳送至應用程式
當您呼叫應用程式的 API 端點時,請在 Authorization 標頭中包含 Bearer 權杖,並將 <your-endpoint> 替換為應用程式的實際 API 路徑:
CURL
curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
-H "Authorization: Bearer <YOUR_TOKEN>"
使用 Requests 庫的 Python
import requests
response = requests.get(
"https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
headers={"Authorization": f"Bearer {token}"}
)
Python 與 SDK
from databricks.sdk import WorkspaceClient
import requests
wc = WorkspaceClient()
headers = wc.config.authenticate()
response = requests.get(
"https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
headers=headers
)
安全性考慮
當您從本機環境連線到應用程式時,請遵循下列安全性最佳做法:
- 切勿在原始程式碼中硬編碼存取權杖。 使用環境變數或安全認證存放區。
- 定期重新整理權杖,以將安全風險降到最低,如果它們受到損害。
- 避免在應用程式日誌中記錄存取權杖或敏感資料。
故障排除
如果您在從本機電腦連線到應用程式時遇到問題,請嘗試這些解決方案。
驗證失敗 (401 錯誤)
驗證下列項目:
- 您的令牌有效(執行
databricks auth token --profile my-env) - 您的個人資料已正確配置
databricks auth login - 權杖尚未過期
- 您的權杖包含必要的 OAuth 範圍。 CLI 和 SDK 工具僅提供基本範圍,例如
all-apis,這可能不足以用於使用者授權。
權限被拒絕(403 個錯誤)
驗證下列項目:
- 您擁有
CAN USE應用程序的權限 - 您的權杖包含必要的 OAuth 範圍。 範圍不足可能會導致 403 錯誤,即使具有有效的權限。
找不到應用程序(404 個錯誤)
驗證下列項目:
- ID 和工作區 URL 正確無誤
- 應用程式已部署並執行
- 端點路徑存在於應用程式中
網路連線問題
驗證下列項目:
- 您的網路允許輸出 HTTPS 連線
-
*.databricksapps.com網域可從您的網路存取
此外,請檢查您的組織是否使用需要設定的 Proxy。
其他資源
如需詳細資訊,請參閱下列資源: