Explicación de la experiencia de inicio de sesión
Esta página explica la experiencia de inicio de sesión en Logto y por qué está diseñada de esta manera.
Introducción
La experiencia de inicio de sesión es el proceso de autenticación de usuario en Logto. El proceso se puede simplificar de la siguiente manera:
- Tu aplicación invoca el método de inicio de sesión.
- El usuario es redirigido a la página de inicio de sesión de Logto. Para aplicaciones nativas, se abre el navegador del sistema.
- El usuario inicia sesión y es redirigido de vuelta a tu aplicación (configurada como el "Redirect URI" en Logto).
Aunque el proceso es simple, la parte de redirección puede parecer excesiva a veces. Sin embargo, puede ser beneficiosa y segura de muchas maneras. Explicaremos las razones en las siguientes secciones.
¿Por qué redirigir?
Flexibilidad
La redirección te permite desacoplar el proceso de autenticación de tu aplicación. A medida que tu negocio crece, puedes mantener el mismo proceso de autenticación sin cambiar tu aplicación. Por ejemplo, puedes añadir autenticación multifactor (MFA) o cambiar los métodos de inicio de sesión sin tocar tu aplicación.
Soporte para múltiples aplicaciones
Si tienes múltiples aplicaciones, tus usuarios pueden iniciar sesión una vez y acceder a todas las aplicaciones sin volver a iniciar sesión. Esto es especialmente útil para negocios SaaS o empresas con múltiples servicios.
Aplicaciones nativas
Para aplicaciones nativas, redirigir al navegador del sistema es una forma segura de autenticar a los usuarios y tiene soporte integrado tanto para iOS como para Android.
- iOS: Apple ofrece ASWebAuthenticationSession para autenticación segura.
- Android: Google proporciona Custom Tabs para una experiencia fluida.
Seguridad
En el fondo, Logto es un proveedor de OpenID Connect (OIDC). OIDC es un estándar ampliamente adoptado para la autenticación de usuarios.
Logto aplica medidas de seguridad estrictas, como PKCE, y desactiva flujos inseguros como el flujo implícito. La redirección es una forma segura de autenticar a los usuarios y puede prevenir muchos ataques comunes.
¿Qué pasa si necesito mostrar algunos componentes de inicio de sesión en mi aplicación?
A veces, tu equipo puede querer mostrar algunos componentes de inicio de sesión en la aplicación, como un botón de "Iniciar sesión con Google". Esto se puede lograr utilizando la función de "Inicio de sesión directo" en Logto.
¿Cómo funciona?
Supongamos que tienes dos botones de llamada a la acción en tu aplicación: "Comenzar" e "Iniciar sesión con Google". Estos botones están diseñados para:
- "Comenzar": Redirigir a la página de inicio de sesión normal.
- "Iniciar sesión con Google": Redirigir a la página de inicio de sesión de Google.
Ambas acciones necesitan completar el proceso de inicio de sesión y redirigir de vuelta a tu aplicación.
Proceso al hacer clic en "Comenzar"
En este caso, la experiencia de inicio de sesión es la misma que la predeterminada. El usuario es redirigido a la página de inicio de sesión de Logto y luego de vuelta a tu aplicación.
Si has configurado métodos de inicio de sesión social (por ejemplo, Google, Facebook) en Logto, el usuario puede ser redirigido a la página de inicio de sesión correspondiente. En la ilustración, solo mostramos el flujo general para simplificar.
Proceso al hacer clic en "Iniciar sesión con Google"
En este caso, el usuario es redirigido automáticamente a la página de inicio de sesión de Google sin interactuar con la página de inicio de sesión de Logto. La velocidad de esta redirección autom ática es casi instantánea, de modo que los usuarios pueden no notar la redirección.
En resumen, la función de inicio de sesión directo es una forma de automatizar algunas interacciones en la experiencia de inicio de sesión sin cambiar el nivel de seguridad.
Usar inicio de sesión directo en tu aplicación
Para usar el inicio de sesión directo, necesitas pasar el parámetro direct_sign_in
al invocar el método de inicio de sesión. El valor debe estar compuesto en un formato que Logto reconozca. Por ejemplo, para iniciar sesión con Google, el valor debe ser social:google
.
En algunos de los SDK oficiales de Logto, hay una opción dedicada para el inicio de sesión directo. Aquí tienes un ejemplo de cómo usar el inicio de sesión directo en el SDK de JavaScript @logto/client
:
client.signIn({
redirectUri: 'https://some-redirect-uri',
directSignIn: { method: 'social', target: 'google' },
});
Para más detalles, consulta Inicio de sesión directo.
Estamos implementando gradualmente esta función en todos los SDK oficiales de Logto. Si no la ves en tu SDK, no dudes en contactarnos.
Necesito que mis usuarios ingresen sus credenciales en mi aplicación
Si necesitas que tus usuarios ingresen sus credenciales (como correo electrónico y contraseña) directamente en tu aplicación, en lugar de redirigir a Logto, no podemos ayudarte con eso en este momento. Históricamente, existía un "Resource Owner Password Credentials" grant, pero ahora se considera inseguro y ha sido formalmente desaprobado en OAuth 2.1.
Para aprender más sobre los riesgos de seguridad del tipo de grant ROPC, consulta nuestra publicación en el blog Por qué deberías desaprobar el tipo de grant ROPC.