Authentication flow for Service Principal using OAuth2 Client Credentials
Store credentials for SPN A
sequenceDiagram
actor Admin
participant Secret Client (SPN A)
participant Entra
participant DQ API (SPN B)
participant Database
Admin ->> Entra: Request access token for DQ API
Entra ->> Entra: Can this user access DQ API?
Entra ->> Admin: Access token for DQ API
Admin ->> DQ API (SPN B): This is the secret for SPN A
DQ API (SPN B) ->> Database: Store secret for SPN A
Client credential flow (using stored credentials)
sequenceDiagram
participant Secret Client (SPN A)
participant Entra
participant DQ API (SPN B)
participant Database
participant Databricks
Secret Client (SPN A) ->> Entra: Request access token for DQ API <br> using client ID and secret
Entra ->> Entra: Can this user access DQ API?
Entra ->> Secret Client (SPN A): Access token for DQ API
Secret Client (SPN A) ->> DQ API (SPN B): Access token for DQ API
DQ API (SPN B) ->> Database: Request client secret for SPN A
Database ->> DQ API (SPN B): Client secret SPN A
DQ API (SPN B) ->> Entra: Request access token for Databricks, <br/>providing token client ID and secret for SPN A
Entra ->> DQ API (SPN B): Access token for Databricks for SPN A
DQ API (SPN B) ->> Databricks: Request data using access token using credentials for SPN A
Databricks ->> DQ API (SPN B): Data from Databricks API