Autenticación segura y sin contraseña usando Auth0

En este artículo, aprenderá cómo configurar la autenticación sin contraseña utilizando el servicio Auth0. Auth0 le permite externalizar las funciones de autenticación para su aplicación.

¿Qué es Auth0??

Auth0 es una herramienta de autenticación como servicio que facilita la implementación de las funciones relacionadas con la autenticación para su aplicación o sitio. Si ha creado una aplicación y solo desea externalizar las funciones de autenticación y autorización, un servicio como Auth0 es algo que debe considerar.

Permítanme resumir rápidamente lo que Auth0 tiene para ofrecer:

  • inicio de sesión único
  • autenticación multifactor
  • inicios de sesión sin contraseña
  • Gestión de usuarios
  • y mucho más!

Configuración inicial

En esta sección, veremos la configuración inicial para preparar la autenticación sin contraseña..

Antes de seguir adelante, asegúrese de instalar Composer, ya que se utilizará para instalar Auth0 SDK reales utilizando el compositor.json expediente. Además, si desea seguir los ejemplos de este artículo, continúe y obtenga una cuenta gratuita con Auth0.

Empecemos por tomar un clon del proyecto de muestra..

git clone https://github.com/auth0-samples/auth0-php-web-app.git .

Instalar dependencias

Adelante la carrera del instalación del compositor comando para instalar las dependencias.

cd 00-Starter-Seed composer install

De acuerdo con la compositor.json archivo, deberías haber instalado el vlucas / phpdotenv y auth0 / auth0-php paquetes.

"name": "auth0 / basic-webapp-sample", "description": "Ejemplo básico para asegurar una aplicación web con Auth0", "require": "vlucas / phpdotenv": "2.4.0", "auth0 / auth0-php ":" ~ 5.0 "," licencia ":" MIT "," autores ": [" nombre ":" Martin Gontovnikas "," correo electrónico ":" [email protected] ", " nombre ":" Germán Lena "," correo electrónico ":" [email protected] "] 

los vlucas / phpdotenv biblioteca se utiliza para inicializar las variables de entorno de la .env expediente. Por lo tanto, le permite separar la configuración del código que cambia entre entornos.

Por otro lado, la auth0 / auth0-php El paquete es el que nos ayudará a configurar la autorización en nuestra aplicación..

Configurar las variables de entorno

A continuación, configuremos la configuración de nuestra aplicación en el .env expediente. Sigue adelante y crea el .env archivo copiándolo desde el .ejemplo expediente.

cp .env.example .env

Contiene valores de configuración que serán utilizados por la biblioteca Auth0..

AUTH0_CLIENT_ID = CLIENT_ID AUTH0_DOMAIN = DOMAIN_NAME AUTH0_CLIENT_SECRET = CLIENT_SECRET AUTH0_CALLBACK_URL = CALLBACK_URL AUTH0_AUDIENCE =

Debería poder encontrar la mayoría de las configuraciones en Aplicaciones> Aplicación predeterminada> Configuración en el panel de Auth0. Tenga en cuenta que estoy usando la aplicación predeterminada creada por el sistema. Por supuesto, puede seguir adelante y crear una nueva aplicación si desea hacerlo..

los AUTH0_CALLBACK_URL es la URL de su aplicación donde Auth0 redirigirá a los usuarios después de iniciar sesión y cerrar sesión. El valor que establezca en este campo debe configurarse en URL de devolución de llamada permitidas en la configuración de la aplicación en el panel de Auth0.

Iniciar sesión sin contraseña usando correo electrónico

Para habilitar el inicio de sesión sin contraseña mediante correo electrónico, vaya a Conexiones> Sin contraseña en el panel de Auth0 y habilitar el Email opción.

En la mayoría de los casos, los ajustes de configuración predeterminados en Email solo trabaja fuera de la caja Por supuesto, si desea cambiar alguna configuración, siga adelante y haga eso. No olvide habilitar las aplicaciones para las que desea autenticación sin contraseña en Conexiones> Sin contraseña> Correo electrónico> Aplicaciones.

Con la configuración inicial en su lugar, podemos continuar y crear un archivo que implemente el inicio de sesión sin contraseña mediante correo electrónico.

Implementar inicio de sesión sin contraseña

Sigue adelante y crea el email_auth_example.php archivo con los siguientes contenidos.

 $ dominio, 'client_id' => $ client_id, 'client_secret' => $ client_secret, 'redirect_uri' => $ redirect_uri, 'audiencia' => $ audiencia, 'scope' => 'openid profile', 'persist_id_token' => true, 'persist_access_token' => true, 'persist_refresh_token' => true,]); $ userInfo = $ auth0-> getUser (); ?>           
Iniciar sesión sin contraseña usando correo electrónico

Bienvenido

Cerrar sesión

Al principio, hemos incluido cargadores automáticos que son responsables de cargar las clases relacionadas Auth0 y variables de entorno.

A continuación, inicializamos las variables de configuración desde .env archivo usando el getenv función.

A continuación, hemos llamado al getUser Método en el objeto Auth0 para verificar si hay alguna sesión activa presente. Basados ​​en eso, mostramos el Registrarse Enlace si no hay sesión activa. De lo contrario, el nombre de usuario del usuario conectado con el Cerrar sesión se muestra el enlace.

Sigue adelante y ejecuta el email_auth_example.php archivo para probar su aplicación!

Iniciar sesión sin contraseña usando SMS

Para habilitar el inicio de sesión sin contraseña mediante SMS, vaya a Conexiones> Sin contraseña en el panel de Auth0 y habilitar el SMS opción. Por defecto, Auth0 usa el servicio Twilio para enviar mensajes. Así que sigue adelante y consigue una cuenta en Twilio..

Desde el panel de Twilio, consigue tu Cuenta sid y AUTH TOKEN e ingrese esos valores en el Twilio SID y Twilio AuthToken campos en Conexiones> Sin contraseña> SMS> Configuración en el panel de Auth0.

Además, necesitas crear un nuevo servicio de mensajería en SMS> Servicios de mensajería En tu panel de Twilio. Después de la creación exitosa del servicio, obtendrá la ID de servicio, y eso es lo que necesitarás para entrar en el SID copiloto campo en Conexiones> Sin contraseña> SMS> Configuración.

Por último, echemos un vistazo a cómo funciona el inicio de sesión sin contraseña mediante SMS. Crear el sms_auth_example.php expediente. Los contenidos son los mismos que email_auth_example.php, excepto el iniciar sesión() función, que es la siguiente.

 función login () var lock = new Auth0LockPasswordless ('','', allowedConnections: [' sms '], // Debe coincidir con el nombre de la conexión de SMS auth: redirectUrl:'', tipo de respuesta:' código '); lock.show (); ;

Todo es más o menos lo mismo, excepto que hemos proporcionado SMS en lugar de correo electrónico en el permitidasConexiones propiedad.

Sigue adelante y ejecuta el sms_auth_example.php archivo para probar su aplicación!

Conclusión

Hoy, observamos el inicio de sesión sin contraseña con el servicio Auth0. Entre los posibles métodos disponibles, implementamos los métodos de correo electrónico y SMS con ejemplos de código..

Siéntase libre de dejar sus pensamientos o preguntas utilizando el siguiente feed!