Saltar al contenido principal
Si tiene su propia base de datos de usuarios, puede usarla como en Auth0 para autenticar usuarios. Siga el proceso para crear la conexión de base de datos personalizada, crear scripts de acción de la base de datos y agregar parámetros de configuración.
Asegúrese de que su base de datos tenga los campos adecuados para almacenar atributos del perfil de usuario, como id, nickname, email y password. Para obtener información sobre el esquema del perfil de usuario de Auth0, lea Perfiles de usuario normalizados. Para obtener más información sobre cómo actualizar perfiles de usuario, lea Actualizar perfiles de usuario con su base de datos.
Auth0 le permite crear conexiones y scripts para la mayoría de las bases de datos de uso común, incluidas:
  • ASP.NET Identity
  • MongoDB
  • MySQL
  • PostgreSQL
  • SQLServer
  • Windows Azure SQL Database
  • Servicios web a los que se accede mediante Basic Auth
Puede conectarse a cualquier tipo de base de datos o servicio web con un script personalizado configurado correctamente. Tenga en cuenta que el saneamiento de las entradas debe realizarse de su lado; Auth0 no sanea ni valida ninguna combinación de username/password que pase una base de datos personalizada. Los scripts de Custom Database están sujetos a la Política de límites de velocidad de Auth0.

Firewall de red

Si está detrás de un firewall, es posible que esta función requiera que agregue las direcciones IP de Auth0 correspondientes a la lista de permitidos para que funcione correctamente.

Cree la conexión en el Auth0 Dashboard

  1. Vaya a Auth0 Dashboard > Authentication > Database y seleccione Create DB Connection.
  2. Configure los ajustes de la conexión y seleccione Create:
ParámetroDefinición
NombreEl nombre de la conexión. El nombre debe comenzar y terminar con un carácter alfanumérico, contener solo caracteres alfanuméricos y guiones, y no superar los 35 caracteres.
Choose one or more attributes as user identifiersElija uno o más atributos identificadores para la conexión.
Choose one or more authentication methodsElija un método de autenticación para verificar la identidad de los usuarios.
Use my own databaseActívelo si tiene una base de datos que desea conectar con Auth0.
Disable Sign UpsImpide que nuevos usuarios se registren desde endpoints públicos.
Promote Connection to Domain LevelEleve esta conexión al nivel de dominio para usarla con aplicaciones de terceros.
Una vez que Auth0 cree la conexión, tendrá las siguientes vistas (además de la vista Settings):
  • Attributes
    • Authentication Methods
    • Custom Database
    • Applications
  1. Seleccione la vista Custom Database y habilite el interruptor Use my own database.
    Habilite la opción Use my own database de Custom Database

Crear scripts de acción para la base de datos

Al activar el interruptor Use my own database, se habilita el área Database Action Scripts, donde crearás scripts para configurar cómo funciona la autenticación al usar tu base de datos. Puedes escribir tus propios scripts de acción para la base de datos o seleccionar una plantilla en el menú desplegable Templates y modificarla según sea necesario. Debes configurar un script login; los scripts adicionales para funciones de usuario son opcionales. Los scripts de acción para la base de datos disponibles son:
NombreDescripciónParámetros
Login
Obligatorio
Se ejecuta cada vez que un usuario intenta iniciar sesión.email, password
CreateSe ejecuta cuando un usuario se registra.user
VerifySe ejecuta después de que un usuario sigue el enlace de verificación.email
Change PasswordSe ejecuta cuando un usuario hace clic en el enlace de confirmación después de solicitar un restablecimiento de contraseña.email, newPassword
Get UserRecupera un perfil de usuario de tu base de datos sin autenticar al usuario.email
DeleteSe ejecuta cuando se elimina un usuario mediante la API o Auth0 Dashboard.id
Para obtener más información sobre estos scripts, consulta Custom Database Action Script Templates y Custom Database Action Script Execution Best Practices.

Crear un script de Login

Evite colisiones de ID de usuario con múltiples bases de datos

Auth0 usará la propiedad id (o, alternativamente, user_id) del perfil de usuario devuelto para identificar al usuario.Si usa varias conexiones de base de datos personalizadas, el valor de id debe ser único en todas ellas para evitar colisiones de ID de usuario. Recomendamos anteponer al valor de id el nombre de la conexión (omitiendo los espacios en blanco). Para obtener más información sobre los ID de usuario, consulte Identificar usuarios.
En los siguientes pasos se usa un ejemplo de script de Login para una base de datos MySQL.
  1. Después de activar el interruptor Use my own database, se habilita el área Database Action Scripts. Asegúrese de estar en la pestaña Login.
  2. Use el menú desplegable Templates para seleccionar la plantilla de script para base de datos MySQL.
    function login(email, password, callback) {
      var bcrypt = require('bcrypt');
      var mysql = require('mysql');
      var connection = mysql.createConnection({
        host: 'localhost',
        user: 'me',
        password: 'secret',
        database: 'mydb'
      });
      connection.connect();
      var query = "SELECT id, nickname, email, password " +
        "FROM users WHERE email = ?";
      connection.query(query, [email], function (err, results) {
        if (err) return callback(err);
        if (results.length === 0) return callback(new WrongUsernameOrPasswordError(email));
        var user = results[0];
        bcrypt.compare(password, user.password, function (err, isValid) {
          if (err) {
            callback(err);
          } else if (!isValid) {
            callback(new WrongUsernameOrPasswordError(email));
          } else {
            callback(null, {
              // Este prefijo (sustitúyalo por el nombre de su propia BD personalizada)
              // garantiza la unicidad entre distintas BD personalizadas si existe la
              // posibilidad de colisiones (por ejemplo, si el ID de usuario es una dirección de correo electrónico o un entero)
              id: 'MyConnection1|' + user.id.toString(),
              nickname: user.nickname,
              email: user.email
            });
          }
        });
      });
    }
    
    El script anterior se conecta a una base de datos MySQL y ejecuta una consulta para recuperar el primer usuario con email == user.email. Luego, con el método bcrypt.compareSync, valida que las contraseñas coincidan y, si la validación se realiza correctamente, devuelve un objeto que contiene la información del perfil del usuario, incluidos id, nickname y email. Este script asume que tiene una tabla users con estas columnas. El id que devuelve el script de Login se usa para construir el atributo de ID del perfil del usuario.
  3. Seleccione Save and Try.
  4. En la ventana modal emergente, introduzca su correo electrónico y contraseña, y haga clic en Try. Se mostrará un menú desplegable para seleccionar entre una lista de runtimes disponibles, con el runtime actual en la parte superior.
    Ventana modal para probar el script de Login.
Auth0 no usa las plantillas de script hasta que seleccione Save o Try. Esto es así incluso si solo modifica un script y no ha hecho cambios en ningún otro. Debe elegir Save al menos una vez para que todos los scripts queden configurados.

Compatibilidad con bases de datos personalizadas para Organizaciones

Si usa conexiones de bases de datos personalizadas junto con Organizaciones, puede usar el parámetro context en la firma del script para poner a disposición de sus scripts de acción de base de datos personalizada detalles de la organización, como id, name y metadata. Los datos de la organización se pasan en el objeto de contexto cuando la acción asociada se produce en el contexto de una organización; por ejemplo, cuando un usuario se autentica en la pantalla de inicio de sesión de una organización, se pasa el script de acción de inicio de sesión. Para obtener más información, consulte Conexiones de bases de datos.

Habilitar el objeto de contexto

  1. Vaya a Auth0 Dashboard > Authentication > Database.
  2. Seleccione su conexión de base de datos.
  3. En la pestaña Custom Database, busque Context objects in database scripts y seleccione Enable.
    Esta función no se puede desactivar una vez habilitada.
  4. En la pantalla de confirmación, seleccione Confirm.

Usar el contexto de organización

Una vez que el objeto de contexto esté habilitado en Dashboard, puedes agregar un objeto context a tus scripts de acción de base de datos personalizados, insertado justo antes del parámetro callback. Cuando se activan eventos con contexto de organización, los datos correspondientes se ponen a disposición de tus scripts de acción de base de datos personalizados con el siguiente formato:
{
    "organization": {
        "display_name": "My Organization",
        "id": "org_XXXXXX",
        "metadata": {
            "example": "value"
        },
        "name": "my-organization"
    }
}
Se pasará siempre un contexto vacío al script delete.

Agregar parámetros de configuración

Puede almacenar parámetros, como las credenciales necesarias para conectarse a su base de datos, en la sección Settings situada debajo del editor de scripts. Estos estarán disponibles para todos sus scripts, y puede acceder a sus valores mediante el objeto configuration en los scripts de acción de base de datos (es decir, configuration.MYSQL_PASSWORD). Use los parámetros agregados en sus scripts para configurar la conexión. Por ejemplo, puede agregar lo siguiente al script de Login de MySQL:
function login (username, password, callback) {
  var mysql = require('mysql');
  var connection = mysql.createConnection({
    host     : configuration.MYSQL_HOST,
    user     : 'me',
    password : configuration.MYSQL_PASSWORD,
    database : 'mydb'
  });
}

Más información