Compartir a través de


Uso de un token de proveedor de identidades para autenticar las API REST de Databricks

Importante

La federación de tokens de OAuth de Databricks está en versión preliminar pública.

En este artículo se explica cómo pasar un token de un proveedor de identidades federado para llamar de forma segura a las API REST de Databricks y acceder a los recursos de Databricks.

Antes de empezar

Antes de comenzar esta tarea, debe haber creado una directiva de federación para su cuenta de Databricks o su principal de servicio.

Después de crear una directiva, puede obtener y usar un token web JSON (JWT) del proveedor de identidades para acceder a las API de Databricks. Los tokens deben ser JWT válidos firmados mediante los algoritmos RS256 o ES256.

El proceso para autenticar el acceso a las API de Databricks a partir de un token de un proveedor de identidades federado es:

  1. Emita una solicitud a un proveedor de identidades para obtener un JWT federado. Los detalles de cómo obtener un JWT federado variarán en función del proveedor de identidades. Consulte la documentación del proveedor de identidades o un administrador para obtener más información.
  2. Intercambie el JWT del proveedor de identidades para un token de OAuth de Databricks.
  3. Use el token de OAuth de Databricks para acceder a las API REST de Databricks.

Flujo de federación de tokens de OAuth

Paso 1: Emitir una solicitud a un proveedor de identidades para obtener un JWT federado

Los detalles de cómo obtener un JWT federado variarán en función del proveedor de identidades. Consulte la documentación del proveedor de identidades o un administrador para obtener más información.

Paso 2: Intercambio de un JWT desde el proveedor de identidades para un token de OAuth de Databricks

Puede intercambiar un JWT desde el proveedor de identidades para un token de OAuth de Databricks mediante el envío de una solicitud al punto de conexión del token de Databricks para su cuenta o área de trabajo mediante el intercambio de tokens de OAuth 2.0 (RFC 8693).

Por ejemplo, este comando intercambia un JWT federado del proveedor de identidades para un token de OAuth de Databricks mediante una directiva de federación de cuenta:

curl --request POST https://<databricks-workspace-host>/oidc/v1/token \
  --data "subject_token=${FEDERATED_JWT_TOKEN}" \
  --data 'subject_token_type=urn:ietf:params:oauth:token-type:jwt' \
  --data 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
  --data 'scope=all-apis'

Sugerencia

Para usar OAuth para acceder a los recursos de la cuenta de Databricks, use la dirección URL https://<databricks-account-host>/oidc/accounts/<account-id>/v1/token.

El siguiente comando de ejemplo intercambia un JWT federado por un token de OAuth de Databricks mediante una directiva de federación de principal de servicio.

curl --request POST https://<databricks-workspace-host>/oidc/v1/token \
  --data "client_id=${CLIENT_ID}" \
  --data "subject_token=${FEDERATED_JWT_TOKEN}" \
  --data 'subject_token_type=urn:ietf:params:oauth:token-type:jwt' \
  --data 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
  --data 'scope=all-apis'

Reemplaza CLIENT_ID por el UUID del principal de servicio (por ejemplo, 7cb2f8a4-49a7-4147-83db-35cb69e5cede).

Si el token del proveedor de identidades es válido y coincide con la directiva de federación, recibirá una respuesta JSON estándar que incluye un token de OAuth de Databricks en el campo access_token. Este token de OAuth se puede usar para acceder a las API de Databricks. El token de OAuth de Databricks resultante tiene la misma notificación de expiración (exp) que el JWT proporcionado en el parámetro subject_token.

A continuación se muestra un ejemplo de respuesta del punto de acceso del token OAuth:

{
  "access_token": "eyJraWQ...odi0WFNqQw",
  "scope": "all-apis",
  "token_type": "Bearer",
  "expires_in": 3600
}

Paso 3: Uso del token de OAuth de Databricks intercambiado para autenticarse en la API de Databricks

A continuación, puede usar el token de OAuth de Databricks resultante como token de portador para acceder a las API de Databricks. Por ejemplo, para utilizar la API SCIM Me de Databricks y recuperar tu usuario de Databricks y tu nombre mostrado:

TOKEN='<your-databricks-oauth-token>'

curl --header "Authorization: Bearer $TOKEN" \
  --url https://${DATABRICKS_WORKSPACE_HOSTNAME}/api/2.0/preview/scim/v2/Me

La respuesta debe ser similar a la siguiente:

{
  "userName": "username@mycompany.com",
  "displayName": "Firstname Lastname"
}