cancel
Showing results forย 
Search instead forย 
Did you mean:ย 
Administration & Architecture
Explore discussions on Databricks administration, deployment strategies, and architectural best practices. Connect with administrators and architects to optimize your Databricks environment for performance, scalability, and security.
cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Any sample code snippet that contains end-to-end OIDC flow

noorbasha534
Valued Contributor II

Hello,

Is there a sample code snippet that depicts end-to-end OIDC flow - imagine, there exists a service principal, interactive user who connect to an sql warehouse, get authenticated, and run some sql queries as part of a python script (jdbc/odbc) for example...

2 REPLIES 2

jack_zaldivar
Databricks Employee
Databricks Employee

hi @noorbasha534 

Do you mean something like this?

import os
from databricks import sql
from databricks.sdk.core import Config, oauth_service_principal

# --- Set environment variables or supply directly ---
DATABRICKS_HOST = os.getenv("DATABRICKS_HOST")              # Databricks workspace URL
DATABRICKS_SQLWAREHOUSE_HTTP_PATH = os.getenv("DATABRICKS_SQLWAREHOUSE_HTTP_PATH")  # HTTP path for SQL Warehouse
DATABRICKS_CLIENT_ID = os.getenv("DATABRICKS_CLIENT_ID")    # Service principal Application (client) ID
DATABRICKS_CLIENT_SECRET = os.getenv("DATABRICKS_CLIENT_SECRET")  # Service principal secret/password

# --- Optionally set values directly ---
# DATABRICKS_HOST = "https://<your-databricks-instance>.cloud.databricks.com"
# DATABRICKS_SQLWAREHOUSE_HTTP_PATH = "<your-sql-warehouse-http-path>"
# DATABRICKS_CLIENT_ID = "<your-service-principal-client-id>"
# DATABRICKS_CLIENT_SECRET = "<your-service-principal-secret>"

# Create OAuth config for Service Principal
config = Config(
    host=DATABRICKS_HOST,
    client_id=DATABRICKS_CLIENT_ID,
    client_secret=DATABRICKS_CLIENT_SECRET,
)

# Authenticate via OIDC and connect
connection = sql.connect(
    server_hostname=DATABRICKS_HOST,
    http_path=DATABRICKS_SQLWAREHOUSE_HTTP_PATH,
    credential_provider=oauth_service_principal(config)
)

cursor = connection.cursor()
cursor.execute("SELECT current_date() as today")
result = cursor.fetchall()
for row in result:
    print(row)

cursor.close()
connection.close()

Advika
Databricks Employee
Databricks Employee

Hello @noorbasha534, did the code snippet shared above help resolve your concern? If it did, please consider marking it as the accepted solution. If you found another approach, please share it with the community so others can benefit as well.

Join Us as a Local Community Builder!

Passionate about hosting events and connecting people? Help us grow a vibrant local communityโ€”sign up today to get started!

Sign Up Now