Saltar al contenido principal
Connected Accounts para Token Vault permite que las aplicaciones accedan de forma segura a API externas en nombre del usuario mediante Token Vault. Mientras que la autenticación de usuario estándar gestiona el inicio de sesión del usuario a través de un Proveedor de identidad social o empresarial, Connected Accounts vincula un perfil de usuario con servicios externos como Google, GitHub, Slack y otros, lo que facilita el acceso delegado a API externas en nombre del usuario. Una vez que un usuario conecta correctamente su cuenta y autoriza el acceso a un proveedor externo compatible, Auth0:
  • Asocia la cuenta con el usuario como cuenta conectada.
  • Almacena en Token Vault los tokens de acceso y de actualización del proveedor externo para la cuenta conectada.
Connected Accounts para Token Vault crea y administra un perfil de usuario unificado de Auth0 vinculado a varias cuentas externas, lo que permite una autorización sin fricciones. A continuación, la aplicación recupera las credenciales almacenadas en Token Vault para interactuar con API externas en nombre del usuario.

Autenticación de usuarios vs. Connected Accounts

Cuando configura Connected Accounts para una conexión social o de empresa compatible, Auth0 usa el flujo de Connected Accounts (endpoint /me/v1/connected-accounts) para recuperar y almacenar tokens de acceso y tokens de actualización en Token Vault, en lugar de usar el flujo de inicio de sesión social o de empresa (endpoint /authorize). Después de completar correctamente el flujo de Connected Accounts, Auth0 agrega la cuenta del usuario al array connected_accounts del perfil de usuario. En cambio, en el flujo de inicio de sesión social o de empresa, Auth0 agrega la cuenta del usuario al array identities del perfil de usuario. La siguiente tabla explica las diferencias entre los flujos de autenticación de usuarios y Connected Accounts:
Autenticación de usuariosConnected Accounts
FlujoFlujo de inicio de sesión con el endpoint /authorizeFlujo de Connected Accounts con el endpoint /me/v1/connected-accounts de API My Account
PropósitoAutentica a los usuarios con un Proveedor de identidad social o de empresaAlmacena en Token Vault los tokens de acceso y de actualización de la cuenta conectada cuando un usuario inicia sesión a través de un proveedor externo compatible, se conecta y autoriza la conexión
Puede habilitar la autenticación de usuarios, Connected Accounts o ambos para conexiones sociales o de empresa compatibles. La siguiente tabla explica el comportamiento de las distintas configuraciones de propósito, incluida la forma de pasar alcances a la conexión:
AutenticaciónConnected AccountsComportamientoAlcances
HabilitadoDeshabilitadoLa conexión usa el flujo de inicio de sesión /authorize para autenticar a los usuarios como un Proveedor de identidad válido.Use Auth0 Dashboard o Management API para pasar los alcances deseados a la conexión. En tiempo de ejecución, esta lista se completa automáticamente con cualquier alcance adicional incluido en el parámetro connection_scope de la solicitud de autorización.
DeshabilitadoHabilitadoLa conexión usa el flujo de Connected Accounts para recuperar y almacenar los tokens de la conexión en Token Vault. La conexión no usa el flujo de inicio de sesión /authorize para autenticar a los usuarios y queda excluida de la lista de proveedores de identidad válidos.Use Auth0 Dashboard o Management API para pasar los alcances deseados a la conexión. En tiempo de ejecución, cualquier alcance incluido en el parámetro scopes de la solicitud de autorización prevalece sobre los alcances seleccionados en Auth0 Dashboard, excepto offline_access, si la conexión lo requiere y está habilitado en Auth0 Dashboard.

Nota: Si la conexión lo requiere, Auth0 le pedirá que habilite offline_access, lo que permite que la aplicación cliente obtenga un token de actualización de Auth0. Debe habilitar offline_access para la conexión en Auth0 Dashboard.
HabilitadoHabilitadoLa conexión usa el flujo de inicio de sesión /authorize para autenticar a los usuarios como un Proveedor de identidad válido. También usa el flujo de Connected Accounts para recuperar y almacenar tokens de acceso de la conexión en Token Vault.Use Auth0 Dashboard y Management API para pasar los alcances deseados a la conexión. En tiempo de ejecución, cualquier alcance incluido en el parámetro scopes prevalece sobre los alcances seleccionados en Auth0 Dashboard, excepto offline_access, si la conexión lo requiere y está habilitado en Auth0 Dashboard.

Nota: Si la conexión lo requiere, Auth0 le pedirá que habilite offline_access, lo que permite que la aplicación cliente obtenga un token de actualización de Auth0. Debe habilitar offline_access para la conexión en Auth0 Dashboard.

Cómo funciona

El flujo de Connected Accounts usa la API My Account para crear y administrar cuentas conectadas de un usuario en proveedores externos compatibles. Antes de que el usuario pueda iniciar una solicitud de Connected Accounts desde la aplicación cliente, esta debe obtener un token de acceso con los alcances de Connected Accounts para acceder a la API My Account.
Si su aplicación usa Organizaciones, autentique al usuario con la organización de destino antes de iniciar el flujo de Connected Accounts. Token Vault almacena la cuenta conectada en el perfil de Auth0 del usuario, por lo que cada miembro de la organización conecta y autoriza su propia cuenta externa.
El siguiente diagrama de secuencia ilustra el flujo de Connected Accounts de extremo a extremo:
Cuando un usuario inicia sesión mediante Auth0 con un proveedor externo compatible, inicia una solicitud de Connected Accounts desde la aplicación cliente:
  1. La aplicación cliente realiza una solicitud POST al endpoint /me/v1/connected-accounts/connect de la API My Account, pasando alcances y otros parámetros que se enviarán al proveedor externo. Para obtener más información, lea Iniciar una solicitud de Connected Accounts.
  2. La API My Account crea un auth_session y un connect_uri únicos que contienen un ticket para redirigir al usuario a un navegador web. La aplicación cliente guarda el auth_session para verificarlo más adelante. Si DPoP está configurado, la API My Account valida el JWT de prueba de DPoP.
  3. La aplicación cliente redirige al usuario al connect_uri con el ticket como parámetro de consulta para la autenticación y autorización del usuario en el navegador. La aplicación cliente también puede pasar un code_challenge o code_challenge_method a la URL, como en el Flujo de código de autorización con PKCE.
  4. El usuario conecta la cuenta y autoriza los permisos de la conexión en la pantalla de consentimiento.
  5. Después de que el usuario autoriza correctamente la conexión, el proveedor externo redirige al usuario a la API My Account, que a su vez lo redirige a la aplicación cliente mediante el redirect_uri con un connect_code de un solo uso.
  6. La aplicación cliente presenta el connect_code, el code_verifier (si corresponde) y el auth_session original a la API My Account realizando una solicitud POST al endpoint /me/v1/connected-accounts/complete. Para obtener más información, lea Completar una solicitud de Connected Accounts.
  7. La API My Account valida la solicitud confirmando lo siguiente:
    • Que el auth_session coincide con el ID emitido originalmente para el usuario
    • Que la solicitud proviene del mismo dispositivo que inició el flujo de Connected Accounts
    • El JWT de prueba de DPoP (si está configurado)
    • El connect_code de un solo uso
    • El code_verifier (si se usa el flujo PKCE)
  8. Después de validar correctamente la solicitud, el Servidor de autorización de Auth0 agrega la cuenta al array connected_accounts del perfil del usuario y almacena los tokens de acceso y de actualización de la cuenta conectada en Token Vault.
  9. La API My Account completa el flujo enviando un código de estado 200 a la aplicación cliente, lo que indica que la cuenta se conectó correctamente.

Requisitos previos

Antes de configurar Connected Accounts, asegúrese de lo siguiente:
  • Configurar el Token Vault para que su aplicación cliente almacene de forma segura los tokens de acceso y de actualización asociados a cada cuenta conectada en el Token Vault.
  • Configurar la API My Account, que los usuarios autenticados usan para conectar y administrar cuentas.
  • Configurar Multi-Resource Refresh Token (MRRT) para obtener un token de acceso para la API My Account.
  • (Opcional) Configurar DPoP para la API My Account y su aplicación cliente a fin de aplicar restricción por remitente a los tokens de acceso y evitar su robo. De forma predeterminada, la API My Account puede aceptar tokens de acceso vinculados a DPoP.

Configurar la API My Account

Para usar Connected Accounts, configure la API My Account en el Auth0 Dashboard:
  1. Vaya a Applications > APIs y active la API My Account.
  2. Una vez activada, seleccione Auth0 My Account API y, a continuación, la pestaña Application Access.
  3. Busque su aplicación cliente y seleccione Edit para configurar sus políticas de acceso a la aplicación.
  4. Seleccione User Access y, en Authorization, seleccione Authorized.
  5. En los permisos, seleccione All para todos los alcances de Connected Accounts de la aplicación.
  6. Seleccione Save. Esto crea un client grant que permite a su aplicación cliente acceder a la API My Account con los alcances de Connected Accounts en nombre del usuario.
  7. Si usa Multi-Resource Refresh Token, vaya a la pestaña Settings. En Access Settings, seleccione Allow Skipping User Consent.

Configurar el Token de actualización multirrecurso

Configure el Token de actualización multirrecurso (MRRT) para obtener un único token de actualización de larga duración que pueda intercambiarse por nuevos tokens de acceso para API My Account y otras API sin que el usuario tenga que volver a autenticarse. Puede configurar MRRT con el Auth0 Dashboard o la Management API.
Para configurar MRRT con el Auth0 Dashboard:
  1. Vaya a Applications > Applications y seleccione su aplicación.
  2. En Multi-Resource Refresh Token, seleccione Edit Configuration.
  3. Para habilitar MRRT con API My Account, active My Account API.

Configurar Connected Accounts

Antes de configurar Connected Accounts para una conexión, asegúrese de haber autorizado la conexión para su aplicación cliente. En Auth0 Dashboard:
  1. Vaya a Authentication > Social Connections o Enterprise Connections y seleccione la conexión.
  2. Seleccione Applications y luego habilite la conexión para su aplicación cliente.
Puede configurar Connected Accounts con Auth0 Dashboard o con la Management API.
Para configurar Connected Accounts con Auth0 Dashboard:
  1. Vaya a Authentication > Social Connections o Enterprise Connections.
  2. Seleccione Create Connection o una conexión existente.
  3. En Purpose, active Connected Accounts for Token Vault. Según la configuración de Purpose, es posible que deba habilitar offline_access en Auth0 Dashboard para permitir que la aplicación cliente obtenga un token de actualización del proveedor externo durante el flujo de Connected Accounts. Para obtener más información, consulte Autenticación de usuarios frente a Connected Accounts.
  4. Haga clic en Save.

Obtener un token de acceso para Connected Accounts

Antes de iniciar una solicitud de Connected Accounts, obtén un token de acceso para la API My Account con los alcances de Connected Accounts. En las siguientes secciones se explica cómo usar Multi-Resource Refresh Token (MRRT) para obtener un token de acceso para la API My Account.

Obtener un Token de actualización

Después de configurar MRRT para la aplicación cliente, inicie el flujo de código de autorización e intercambie el code de autorización resultante por un Token de actualización. A continuación se muestra una solicitud del flujo de código de autorización para un cliente confidencial que incluye offline_scope para devolver un Token de actualización y un code de autorización de un solo uso para el identificador de la API My Account https://{yourDomain}/me/:
open "https://{yourDomain}/authorize?client_id=<CLIENT_ID>&response_type=code&prompt=login&scope=openid%20profile%20offline_access&redirect_uri=<REDIRECT_URI>&state=<STATE>&audience=https://my-example-api.com"
Intercambie el code de autorización de un solo uso por un token de actualización en el endpoint /token:
curl -s --request POST \
  --url "https://{yourDomain}/oauth/token" \
  --header 'Content-Type: application/json' \
  --data-binary @- <<EOF | jq -r '.refresh_token'
{
  "grant_type": "authorization_code",
  "code": "<CONNECT_CODE>",
  "client_id": "<CLIENT_ID>",
  "client_secret": "<CLIENT_SECRET>",
  "redirect_uri": "<REDIRECT_URI>"
}
EOF

Canjear un Token de actualización por un Token de acceso para la API My Account

Una vez que hayas obtenido un Token de actualización, canjéalo por un Token de acceso para la API My Account con los alcances de Connected Accounts mediante el tipo de concesión de token de actualización:
curl -s -X POST "https://{yourDomain}/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=refresh_token" \
  --data-urlencode "client_id=<CLIENT_ID>" \
  --data-urlencode "client_secret=<CLIENT_SECRET>" \
  --data-urlencode "refresh_token=<REFRESH_TOKEN>" \
  --data-urlencode "audience=https://{yourDomain}/me/" \
  --data-urlencode "scope=openid profile offline_access create:me:connected_accounts read:me:connected_accounts delete:me:connected_accounts"

Iniciar solicitud de Connected Accounts

Para iniciar una solicitud de Connected Accounts, realice una solicitud POST al endpoint /me/v1/connected-accounts/connect de la API de My Account con los siguientes parámetros:
Para una conexión social de Google, asegúrese de seleccionar offline_access en el Auth0 Dashboard al configurar la conexión. Esto es necesario para que su aplicación cliente pueda obtener un Token de actualización del Servidor de autorización de Auth0.
ParameterDescription
connectionNombre de la conexión. Para una conexión social de Google, establézcalo en google-oauth2.
redirect_uriLa URL de devolución de llamada de su aplicación cliente.
stateUna cadena única y aleatoria asociada con la solicitud para evitar ataques.
scopes(Opcional) Los alcances que se pasan al proveedor externo como un array de cadenas.

Si se usa para pasar alcances para una conexión social de Google, incluya openid y profile como mínimo. En tiempo de ejecución, cualquier alcance incluido en el parámetro scopes tiene prioridad sobre los alcances seleccionados en el Auth0 Dashboard, excepto offline_access, si la conexión lo requiere y está habilitado en el Auth0 Dashboard.
curl --request POST "https://{yourDomain}/me/v1/connected-accounts/connect" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <MY_ACCOUNT_API_TOKEN>" \
--data '{
    "connection": "google-oauth2",
    "redirect_uri": "<REDIRECT_URI>",
    "state": "<STATE>",
    "scopes": ["openid","profile"] // los alcances que se pasen sobrescriben los que seleccionó en el Auth0 Dashboard
}'
Si la operación se realiza correctamente, la API My Account devuelve una respuesta similar a la siguiente:
ParameterDescription
auth_sessionID de sesión que representa la sesión autenticada actual del usuario principal. La aplicación cliente guarda el ID de sesión para verificarlo posteriormente.
connect_uriURL a la que la aplicación cliente redirige al usuario y que abre un navegador web para gestionar la autorización con el proveedor externo.
connect_paramsParámetros adicionales necesarios para el URI de conexión. Incluye un ticket temporal que la API My Account utiliza para verificar la solicitud.
expires_inTiempo de expiración de la sesión en segundos.
{
  "auth_session": "PKM-CYkdx2FyLb4Oob4ED91cSE7i_XJ4SVJByik0xKQxz9CgUZ5JlYr-aMPty0Xr",
  "connect_uri": "https://{yourDomain}.us.auth0.com/connect",
  "connect_params": {
    "ticket": "9375f326-5846-4b57-ae8b-8042573f7c1f"
  },
  "expires_in": 300
}
En el navegador web, vaya a connect_uri con el ticket como parámetro de consulta. Autorice la lista de alcances en la pantalla de consentimiento y, a continuación, extraiga y guarde el connect_code del fragmento de la URL.
open https://{yourDomain}.us.auth0.com/connected-accounts/connect?ticket={tickedId}

Completar una solicitud de Connected Accounts

Para completar una solicitud de Connected Accounts, realiza una solicitud POST al endpoint /me/v1/connected-accounts/complete con los siguientes parámetros:
ParámetroDescripción
auth_sessionID de sesión que representa la sesión autenticada actual del usuario principal. La aplicación cliente guarda el ID de sesión para verificarlo más adelante.
connect_codeUn code de un solo uso y de corta duración recibido durante el proceso de autorización del proveedor externo. Este code se intercambia de forma segura en el servidor para obtener los tokens de acceso finales de la API externa.
redirect_uriLa URL de devolución de llamada exacta de tu aplicación, a la que se redirigió al usuario después de autorizar correctamente la conexión con el proveedor externo. Este valor debe coincidir con el redirect_uri usado para iniciar el flujo.
curl --location "https://{yourDomain}/me/v1/connected-accounts/complete" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <MY_ACCOUNT_API_TOKEN>" \
--data '{
    "auth_session": "<AUTH_SESSION>",
    "connect_code": "<CONNECT_CODE>",
    "redirect_uri": "<REDIRECT_URI>"
}'
Si la operación se realiza correctamente, la API My Account devuelve una respuesta como la siguiente:
ParámetroDescripción
idIdentificador único de la cuenta conectada.
connectionNombre de la conexión.
created_atMarca de tiempo de cuándo se creó la cuenta conectada y se vinculó al perfil del usuario.
scopesLos alcances específicos de OAuth (permisos) a los que el usuario concedió acceso a su aplicación al conectarse al proveedor externo. Estos alcances determinan qué acciones puede realizar su aplicación en la API externa.
access_typeIndica el tipo de acceso concedido. Un valor habitual es offline, lo que significa que se obtuvo y almacenó correctamente un Token de actualización, lo que permite que su aplicación mantenga el acceso incluso cuando el usuario está desconectado.
{
  "id": "cac_6ZqSK7Kj1R8LDZJvSb1tAn",
  "connection": "google-oauth2",
  "created_at": "2025-10-13T21:09:04.126Z",
  "scopes": [
    "https://www.googleapis.com/auth/calendar",
    "https://www.googleapis.com/auth/calendar.addons.execute",
    "https://www.googleapis.com/auth/calendar.events",
    "https://www.googleapis.com/auth/calendar.events.readonly",
    "https://www.googleapis.com/auth/calendar.settings.readonly",
    "https://www.googleapis.com/auth/userinfo.profile",
    "openid"
  ],
  "access_type": "offline"
}

Gestionar cuentas conectadas

Para gestionar las cuentas conectadas de un usuario, usa la colección /me/v1/connected-accounts. Antes de usar la colección /connected-accounts, obtén un token de acceso para Connected Accounts.

Consultar las conexiones de cuentas vinculadas

Realiza una solicitud GET al endpoint /me/v1/connected-accounts/connections para obtener una lista de conexiones vinculadas al perfil del usuario:
curl -X GET --location "https://{yourDomain}/me/v1/connected-accounts/connections" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <MY_ACCOUNT_API_TOKEN>"
Si la operación se realiza correctamente, la API My Accounts devuelve una respuesta similar a la siguiente:
{
  "connections": [
    {
      "name": "google-oauth2",
      "strategy": "google-oauth2",
      "scopes": [
        "email",
        "profile",
        "https://www.googleapis.com/auth/calendar",
        "https://www.googleapis.com/auth/calendar.events",
        "https://www.googleapis.com/auth/calendar.addons.execute",
        "https://www.googleapis.com/auth/calendar.events.readonly",
        "https://www.googleapis.com/auth/calendar.settings.readonly",
        "openid"
      ]
    },
    {
      "name": "custom",
      "strategy": "oauth2",
      "scopes": [
        "openid"
      ]
    }
  ]
}

Consultar cuentas conectadas

Realiza una solicitud GET al endpoint /me/v1/connected-accounts/accounts para obtener una lista de cuentas conectadas vinculadas al perfil del usuario:
curl -X GET --location "https://{yourDomain}/me/v1/connected-accounts/accounts" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <MY_ACCOUNT_API_TOKEN>"
Si la solicitud se realiza correctamente, la API My Accounts devuelve una respuesta como la siguiente:
{
  "accounts": [
    {
      "id": "cac_6ZqSK7Kj1R8LDZJvSb1tAn",
      "connection": "google-oauth2",
      "access_type": "offline",
      "scopes": [
        "https://www.googleapis.com/auth/calendar",
        "https://www.googleapis.com/auth/calendar.addons.execute",
        "https://www.googleapis.com/auth/calendar.events",
        "https://www.googleapis.com/auth/calendar.events.readonly",
        "https://www.googleapis.com/auth/calendar.settings.readonly",
        "https://www.googleapis.com/auth/userinfo.profile",
        "openid"
      ],
      "created_at": "2025-10-13T21:09:04.126Z"
    },
    {
      "id": "cac_fH32E6CWN7HcWZN5w9Vieq",
      "connection": "custom",
      "access_type": "offline",
      "scopes": [
        "offline_access",
        "openid",
        "profile"
      ],
      "created_at": "2025-10-13T18:06:47.216Z"
    }
  ]
}
También puede usar la Management API para obtener una lista de cuentas conectadas de un perfil de usuario haciendo una solicitud GET al endpoint /users/{userId}/connected-accounts:
curl -X GET --location "https://{yourDomain}/api/v2/users/{userId}/connected-accounts" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>"
Si la operación se realiza correctamente, la Management API devuelve una respuesta como la siguiente:
{
  "connected_accounts": [
    {
      "id": "cac_6ZqSK7Kj1R8LDZJvSb1tAn",
      "connection": "google-oauth2",
      "connection_id": "con_uBbSbbSpqGqOTvRu",
      "strategy": "google-oauth2",
      "access_type": "offline",
      "scopes": [
        "https://www.googleapis.com/auth/calendar",
        "https://www.googleapis.com/auth/calendar.addons.execute",
        "https://www.googleapis.com/auth/calendar.events",
        "https://www.googleapis.com/auth/calendar.events.readonly",
        "https://www.googleapis.com/auth/calendar.settings.readonly",
        "https://www.googleapis.com/auth/userinfo.profile",
        "openid"
      ],
      "created_at": "2025-10-13T21:09:04.126Z"
    }
  ]
}

Consultar cuentas conectadas para una conexión específica

Realice una solicitud GET al endpoint /me/v1/connected-accounts/accounts y pase el nombre de la conexión como parámetro de consulta para devolver una lista de cuentas conectadas filtradas por una conexión específica vinculada a un perfil de usuario:
curl -X GET --location "https://{yourDomain}/me/v1/connected-accounts/accounts?connection={connectionName}" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <MY_ACCOUNT_API_TOKEN>"
Si la operación se realiza correctamente, la API My Accounts devuelve una respuesta como la siguiente, filtrada por las conexiones google-oauth2:
{
  "accounts": [
    {
      "id": "cac_6ZqSK7Kj1R8LDZJvSb1tAn",
      "connection": "google-oauth2",
      "access_type": "offline",
      "scopes": [
        "https://www.googleapis.com/auth/calendar",
        "https://www.googleapis.com/auth/calendar.addons.execute",
        "https://www.googleapis.com/auth/calendar.events",
        "https://www.googleapis.com/auth/calendar.events.readonly",
        "https://www.googleapis.com/auth/calendar.settings.readonly",
        "https://www.googleapis.com/auth/userinfo.profile",
        "openid"
      ],
      "created_at": "2025-10-13T21:09:04.126Z"
    }
  ]
}

Eliminar una cuenta conectada

Realice una solicitud DELETE al endpoint /me/v1/connected-accounts/accounts/{connectedAccountId} para eliminar una cuenta conectada con un ID determinado:
curl -X DELETE --location "https://{yourDomain}/me/v1/connected-accounts/accounts/{connectedAccountId}" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <MY_ACCOUNT_API_TOKEN>"
Cuando eliminas una cuenta conectada, Auth0 elimina del Token Vault los tokens de acceso y de actualización del proveedor externo. Esto no revoca automáticamente los tokens del proveedor externo, y el token de actualización todavía podría usarse para obtener nuevos tokens de acceso. Debes revocar manualmente los tokens del proveedor externo si se han compartido o copiado en otro sitio. Si la operación se completa correctamente, la API My Accounts devuelve una respuesta como la siguiente:
HTTP/1.1 204 No Content