User/interactive Azure AD authentication

Open
#690 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
30/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
azure, python, sql

Research direction

The issue names dbx_sql.connect, databricks-sdk WorkspaceClient, DefaultAzureCredential, and the existing Entra ID M2M method, but no repository files or tests. Start by locating the connection authentication entry point and its M2M implementation, then compare it with the az login and DefaultAzureCredential flow shown. Done means a supported U2M workflow can authenticate and run the example SQL query.

Written by the indexing model from the issue text.

Description

#621 by @jprakash-db added a great feature that we will be testing ASAP. Since Entra ID authentication seems to be getting upgraded, I wanted to ask about interactive login.

Using databricks-sdk I can perform this user authentication by doing (from the terminal)

az login --use-device-code
...
User is logged in

then in python

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host="https://adb-XXXXXX.azuredatabricks.net/")

Would the newly-added Entra ID M2M method be extendable for U2M workflows?

Otherwise, is there an alternative implementation I could use?

This is what I'm currently doing to manually mint a token in the user interactive workflow currently:

from azure.identity import DefaultAzureCredential
from databricks import sql as dbx_sql

_DATABRICKS_SCOPE = "2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default"

DATABRICKS_CLUSTER_HOST = "adb-XXX.azuredatabricks.net"
DATABRICKS_CLUSTER_HTTP_PATH = "/sql/1.0/warehouses/XXX"

cred = DefaultAzureCredential()
token = cred.get_token(_DATABRICKS_SCOPE)

with dbx_sql.connect(
    server_hostname=DATABRICKS_CLUSTER_HOST,
    http_path=DATABRICKS_CLUSTER_HTTP_PATH,
    access_token=token.token,
) as conn, conn.cursor() as c:
        c.execute("SELECT current_user(), current_catalog(), current_schema();")
        print(c.fetchall())

Thanks!

Dominant language
Python
Stars
233
Forks
152
Avg merge
21h 5m
Merged PRs (30d)
10

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from databricks/databricks-sql-python

All issues in databricks/databricks-sql-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.