Skip to main content
El SDK de Auth0-PHP incluye tres clases principales: Auth0\SDK\Auth0, Auth0\SDK\API\Authentication y Auth0\SDK\API\Management, cada una con interfaces para distintas funcionalidades en las API de Auth0. Si estás creando una aplicación web con estado que necesita hacer un seguimiento de las sesiones de los usuarios, la clase base Auth0 es con la que más trabajarás. Proporciona métodos para gestionar tareas habituales de autenticación y manejo de sesiones, como iniciar y cerrar sesión, recuperar credenciales de usuario, comprobar si hay una sesión disponible y gestionar callbacks. Estas tareas se explican a continuación. Para obtener más información sobre estas capacidades y otras, consulta la página de documentación de la API de autenticación.

Requisitos previos

La documentación que aparece a continuación supone que ha seguido los pasos de Auth0-PHP y que parte del código proporcionado allí.

Inicio de sesión

El proceso de inicio de sesión predeterminado en el SDK de PHP usa un grant de código de autorización combinado con la página de de Auth0. En resumen, este proceso es el siguiente:
  1. Un usuario que solicita acceso es redirigido a la página de Universal Login.
  2. El usuario se autentica mediante una de las muchas conexiones disponibles: social (Google, X, Facebook), base de datos (correo electrónico y contraseña), sin contraseña (correo electrónico, SMS) o empresarial (ActiveDirectory, ADFS, Office 365).
  3. Si el proceso se completa correctamente, el usuario es redirigido o devuelto a la URL de callback de tu aplicación con los valores code y state; de lo contrario, se devuelve error y error_description.
  4. Si la autenticación se realizó correctamente, se valida el valor state.
  5. Si state es válido, el valor code se canjea con Auth0 por un token de ID y/o un Token de acceso.
  6. La identidad del token de ID puede usarse para crear una cuenta, iniciar una sesión específica de la aplicación o conservarse como la sesión del usuario.
Auth0-PHP gestiona la mayoría de estos pasos automáticamente. Tu aplicación deberá:
  1. Llamar a Auth0\SDK\Auth0::login() cuando los usuarios necesiten iniciar sesión (por ejemplo, al hacer clic en un enlace, visitar contenido restringido, etc.).
  2. Llamar a Auth0\SDK\Auth0::exchange() cuando los usuarios sean redirigidos a tu URL de callback.
  3. Llamar a Auth0\SDK\Auth0::getCredentials() cuando necesites comprobar si un usuario ha iniciado sesión y recuperar su información.
Una implementación sencilla de estos pasos se ve así:
// 👆 Continuamos desde la guía de "introducción" enlazada en "Requisitos previos" arriba. Añade esto al archivo index.php que creaste allí.

// getExchangeParameters() se puede usar en tu URL de callback para verificar que todos los parámetros necesarios estén presentes para el intercambio de código post-autenticación.
if ($auth0->getExchangeParameters()) {
    // Si están presentes, debemos realizar el intercambio de código.
    $auth0->exchange();
}

// Verificar si el usuario ya inició sesión
$session = $auth0->getCredentials();

if ($session === null) {
    // ¡El usuario no ha iniciado sesión!
    // Redirigir a la página de Universal Login para autenticación.
    header("Location: " . $auth0->login());
    exit;
}

// 🎉 En este punto tenemos una sesión de usuario autenticado accesible desde $session; ¡la lógica de tu aplicación puede continuar desde aquí!
echo "Authenticated!";
Por último, deberás agregar la URL de tu aplicación al campo “Allowed Callback URLs” de tu aplicación de Auth0 en la página de configuración. Después de eso, al cargar la página con tu script, debería ocurrir lo siguiente:
  1. Redirigirte inmediatamente a una página de inicio de sesión de Auth0 para tu inquilino.
  2. Después de iniciar sesión correctamente con cualquier conexión, redirigirte de vuelta a tu aplicación.
  3. Mostrar una página sencilla con ‘¡Autenticado!’.

Perfil

Ahora que hemos autenticado a un usuario, podemos trabajar con los datos persistentes de su sesión para, por ejemplo, mostrar su perfil.
// 👆 Continuamos desde el código anterior. Añade esto al archivo index.php.

printf(
    '<h1>Hi %s!</h1>
    <p><Frame><img width="100" src="/%s"></Frame></p>
    <p><strong>Last update:</strong> %s</p>
    <p><strong>Contact:</strong> %s %s</p>
    <p><a href="/docs/logout.php">Logout</a></p>',
    isset($session->user['nickname']) ? strip_tags($session->user['nickname']) : '[unknown]',
    isset($session->user['picture']) ? filter_var($session->user['picture'], FILTER_SANITIZE_URL) : 'https://gravatar.com/avatar/',
    isset($session->user['updated_at']) ? date('j/m/Y', strtotime($session->user['updated_at'])) : '[unknown]',
    isset($session->user['email']) ? filter_var($session->user['email'], FILTER_SANITIZE_EMAIL) : '[unknown]',
    ! empty($session->user['email_verified']) ? '✓' : '✗'
);

Cerrar sesión

Además de iniciar sesión, también queremos que los usuarios puedan cerrar sesión. Cuando los usuarios cierren sesión, deben invalidar su sesión en la aplicación. En este SDK, eso significa eliminar sus datos persistentes de usuario y token:
// Cerrar sesión de la aplicación.
header("Location: $auth0->logout());
Si utiliza (SSO) y también quiere cerrar su sesión de Auth0, consulte la sección de cierre de sesión de SSO aquí. Encontrará más información general sobre el cierre de sesión aquí.

Más información