Saltar al contenido principal
Los proveedores de identidad (IdP) más comunes están disponibles en el Auth0 Dashboard y en el Auth0 Marketplace. Sin embargo, puede agregar cualquier proveedor de como una Conexión social personalizada en el .
  1. En el Dashboard, vaya a Authentication > Social.
  2. Seleccione Create Connection, vaya al final de la lista y luego seleccione Create Custom.
El formulario que aparece contiene varios campos que debe usar para configurar la conexión personalizada:
  • Connection Name: Identificador lógico de la Conexión que está creando. Este nombre no se puede cambiar, debe comenzar y terminar con un carácter alfanumérico, y solo puede contener caracteres alfanuméricos y guiones.
  • Authorization URL: URL a la que se redirige a los usuarios para iniciar sesión.
    No intente establecer el parámetro OAuth2 response_mode en la URL de autorización. Esta conexión solo admite el valor predeterminado de response_mode (query).
  • Token URL: URL que se usa para intercambiar el código de autorización recibido por y, si se solicitan, .
  • Scope: Parámetros scope que se enviarán con la solicitud de autorización. Separe varios alcances con espacios.
  • Separate scopes using a space: Opción que determina cómo se delimitan los alcances si se incluye el parámetro connection_scope al llamar a la API del IdP. De forma predeterminada, los alcances se delimitan con una coma. Si la opción está habilitada, los alcances se delimitan con un espacio. Para obtener más información, lea Agregar scopes/permisos para llamar a las API del Proveedor de identidad.
  • : ID de cliente de Auth0 como aplicación que se usa para solicitar autorización e intercambiar el código de autorización. Para obtener un ID de cliente, deberá registrarse con el .
  • : Secreto del cliente de Auth0 como aplicación que se usa para intercambiar el código de autorización. Para obtener un Secreto del cliente, deberá registrarse con el proveedor de identidad.
  • script para obtener el perfil del usuario: Script de Node.js que se usa para llamar a una URL de userinfo con el token de acceso proporcionado. Para obtener más información sobre este script, consulte script para obtener el perfil del usuario.
  • Purpose: Habilita la conexión social para Authentication, Connected Accounts for Token Vault, o ambos. Para obtener más información, lea Autenticación de usuarios vs. Cuentas conectadas.
Al configurar el Proveedor de identidad personalizado, use la URL de callback https://{yourDomain}/login/callback.
Una vez que cree la conexión personalizada, verá la vista Applications y su conexión estará sujeta a la política de limitación de velocidad de Auth0. Aquí puede habilitar y deshabilitar las aplicaciones en las que desea que aparezca la conexión.

Actualizar el flujo de autenticación

Cuando crea una conexión, el tipo de concesión predeterminado de OAuth 2.0 asignado a la conexión es Authorization Code Flow. Si tiene una aplicación pública que no puede almacenar un Secreto del cliente, como una aplicación de una sola página o una aplicación nativa, puede usar la para actualizar la conexión y que use Authorization Code Flow + PKCE. Para obtener más información sobre los , consulte ¿Qué flujo de OAuth 2.0 debo usar?
  1. Haga una solicitud GET al endpoint /get-connections-by-id. La respuesta será similar a esta:
    {
      "id": "[connectionID]",
      "options": {
        "email": true,
        "scope": [
          "email",
          "profile"
        ],
        "profile": true
      },
      "strategy": "google-oauth2",
      "name": "google-oauth2",
      "is_domain_connection": false,
      "realms": [
        "google-oauth2"
      ]
    }
    
  2. Copie el objeto options completo.
  3. Haga una solicitud PATCH con el objeto options y agregue "pkce_enabled": true.
Si no incluye el objeto options completo, se perderá información y la conexión dejará de funcionar.

Script para obtener el perfil del usuario

El script para obtener el perfil del usuario se ejecuta después de que el usuario haya iniciado sesión con el proveedor de OAuth2. Auth0 ejecuta este script para llamar a la API del proveedor de OAuth2 y obtener el perfil del usuario:
function fetchUserProfile(accessToken, context, callback) {
  request.get(
    {
      url: 'https://auth.example.com/userinfo',
      headers: {
        'Authorization': 'Bearer ' + accessToken,
      }
    },
    (err, resp, body) => {
      if (err) {
        return callback(err);
      }
      if (resp.statusCode !== 200) {
        return callback(new Error(body));
      }
      let bodyParsed;
      try {
        bodyParsed = JSON.parse(body);
      } catch (jsonError) {
        return callback(new Error(body));
      }
      const profile = {
        user_id: bodyParsed.account.uuid,
        email: bodyParsed.account.email
      };
      callback(null, profile);
    }
  );
}
La propiedad user_id en el perfil devuelto es obligatoria, y la propiedad email es opcional, aunque se recomienda encarecidamente. Para obtener más información sobre qué atributos se pueden devolver, consulta Atributos raíz del perfil de usuario. Puedes filtrar, agregar o eliminar cualquier elemento del perfil devuelto por el proveedor. Sin embargo, se recomienda mantener este script lo más simple posible. Para manipular la información del usuario de forma más avanzada, puedes usar Rules. Una ventaja de usar Rules es que se aplican a cualquier conexión.

Iniciar sesión con la conexión personalizada

Puede usar cualquiera de los mecanismos estándar de Auth0 para que un usuario inicie sesión con su conexión personalizada. Un vínculo directo tendría este aspecto:

Modifique el icono y el nombre para mostrar

Para añadir un icono al botón de inicio de sesión del Proveedor de identidad o cambiar el texto que se muestra en ese botón, puede usar la propiedad icon_url del objeto options y la propiedad display_name, respectivamente, a través de la Management API.
  • Si display_name no se incluye en la solicitud, el campo se sobrescribe con el valor de name de la Conexión.
  • display_name y icon_url solo afectan a cómo se muestra la Conexión en la experiencia de Universal Login.

Pasar parámetros específicos del proveedor

Puede pasar parámetros específicos del proveedor al endpoint de autorización de los proveedores de OAuth 2.0. Estos parámetros pueden ser estáticos o dinámicos.

Pasar parámetros estáticos

Para pasar parámetros estáticos (parámetros que se envían con cada solicitud de autorización), puedes usar el elemento authParams de options al configurar una conexión de OAuth 2.0 mediante la Management API. La siguiente llamada establecerá el parámetro estático custom_param con el valor custom.param.value en todas las solicitudes de autorización:

Pasar parámetros dinámicos

En determinadas circunstancias, es posible que quiera pasar un valor dinámico a un Proveedor de identidad de OAuth 2.0. En este caso, puede usar el elemento authParamsMap de options para especificar una asignación entre uno de los parámetros adicionales existentes que acepta el endpoint /authorize de Auth0 y el parámetro que acepta el Proveedor de identidad. Siguiendo con el mismo ejemplo anterior, supongamos que quiere pasar el parámetro custom_param al endpoint de autorización, pero quiere especificar el valor real del parámetro al llamar al endpoint /authorize de Auth0. En este caso, puede usar uno de los parámetros adicionales existentes que acepta el endpoint /authorize, como access_type, y asignarlo al parámetro custom_param: Ahora, al llamar al endpoint /authorize, puedes pasar el tipo de acceso en el parámetro access_type, y ese valor, a su vez, se enviará al endpoint de autorización en el parámetro custom_param.

Pasar encabezados adicionales

En algunos casos, deberá pasar encabezados adicionales al de un proveedor de OAuth 2.0. Para configurar encabezados adicionales, abra la configuración de la Conexión y, en el campo Custom Headers, especifique un objeto JSON con los encabezados personalizados como pares clave-valor:
{
    "Header1" : "Value",
    "Header2" : "Value"
}
Usemos un ejemplo en el que un Proveedor de identidad puede requerir que envíes un encabezado Authorization con credenciales de autenticación básica. En este caso, puedes especificar el siguiente objeto JSON en el campo Custom Headers:
{
  "Authorization": "Basic [your credentials]"
}
Donde [your credentials] son las credenciales reales que deben enviarse al Proveedor de identidad.

Más información