Logto v1.46.0 ya está aquí. Trae autenticación OIDC step-up, inicio de sesión con Ethereum, una manera de mantener el aviso de Guardar Contraseña de iOS, tokens de acceso personal de autoservicio y una ronda de refuerzo de seguridad.
SimengDeveloper
Deja de perder semanas en la autenticación de usuarios
Lanza aplicaciones seguras más rápido con Logto. Integra la autenticación de usuarios en minutos y concéntrate en tu producto principal.
Logto v1.46.0 introduce la autenticación OIDC step-up para acciones sensibles, inicio de sesión con Ethereum, una forma de mantener el aviso de "Guardar Contraseña" en iOS y tokens de acceso personal de autoservicio en el Centro de Cuenta, junto con GeeTest CAPTCHA, atributos estáticos SAML y una ronda de refuerzo de seguridad. Esto es lo nuevo.
Ahora las aplicaciones pueden requerir un inicio de sesión reciente o más fuerte antes de acciones sensibles, utilizando parámetros OIDC estándar.
Solicitar y verificar: Pasa acr_values y max_age en la solicitud de autorización y después lee acr, amr y auth_time de los tokens ID, access tokens y respuestas de introspección. Los valores ACR soportados se anuncian en el documento de descubrimiento.
Integrado en el Centro de Cuenta: Ahora el Centro de Cuenta autoriza operaciones sensibles del API de cuenta con un token de acceso de primera parte reciente. Cuando el inicio de sesión no es lo suficientemente reciente, el API de cuenta responde con un reto step-up RFC 9470.
Ventana configurable: Configura cuán reciente debe ser el inicio de sesión en Consola > Experiencia de inicio de sesión > Centro de cuenta > Autenticación reciente (10 minutos por defecto). Un cliente aún puede pedir una ventana más corta con max_age.
Compatible con versiones anteriores: Las apps que llaman directamente al API de cuenta pueden seguir usando un ID de registro de verificación para operaciones sensibles.
El nuevo conector social de monedero Ethereum (@logto/connector-siwe) permite a los usuarios iniciar sesión con una cartera EVM. Los usuarios con un monedero de navegador (un proveedor EIP-1193 inyectado) firman un mensaje de Sign-In with Ethereum (EIP-4361) de un solo uso sin salir de la página de inicio de sesión. Una dirección funciona en todas las cadenas EVM soportadas y los administradores pueden restringir los IDs de cadena permitidos.
En iOS, ASWebAuthenticationSession se cierra tan pronto como ve la URL de callback de la app, lo que descarta el aviso del sistema de "Guardar Contraseña" justo después de un inicio de sesión por contraseña.
Pasa el nuevo parámetro de inicio de sesión confirm_redirect_policy=password para mostrar una página "Continuar" después de que el usuario ingresa una contraseña. La página regresa a la app solo cuando el usuario selecciona "Continuar", para que el aviso permanezca en pantalla. Sin el parámetro, Logto redirige de vuelta enseguida como antes.
Cuando los tokens de acceso personal están habilitados en el Centro de Cuenta, los usuarios pueden crear, renombrar y revocar sus propios tokens en la página Seguridad del Centro de Cuenta. Cada token se muestra solo una vez al momento de su creación y expira en un máximo de 365 días.
Las mismas operaciones están disponibles a través del API de cuenta, bajo /api/my-account/personal-access-tokens, con el nuevo alcance urn:logto:scope:personal_access_tokens.
GeeTest CAPTCHA: GeeTest CAPTCHA v4 ya está disponible en Consola > Seguridad > CAPTCHA. Es ideal para experiencias de inicio dirigidas a China continental, donde Google reCAPTCHA suele ser inaccesible.
Requerir configuración MFA para el usuario: Activa Requerir configuración MFA en la página de detalles del usuario o configura mfa.required mediante el API de gestión. El usuario deberá configurar MFA en su próximo inicio de sesión, sin importar la política de MFA a nivel organización.
Desbloquear un usuario: Una nueva acción de desbloqueo en la página de detalles del usuario elimina los bloqueos de inicio de sesión y verificación de seguridad para el ID del usuario, email principal, teléfono principal y nombre de usuario a la vez.
Importación de contraseñas SHA-crypt: Importa usuarios con hashes de contraseña SHA-crypt ($5$ y $6$) usando el algoritmo de contraseña Legacy.
access_denied cuando se cancela el inicio de sesión: Cancelar la página de consentimiento o un inicio de sesión directo fallido ahora regresa al usuario a la app cliente con access_denied. Las experiencias de inicio personalizadas pueden finalizar la interacción igual usando POST /api/experience/abort.
login_hint para el Centro de Cuenta: Añade login_hint a cualquier URL del Centro de Cuenta para pre-rellenar el identificador cuando el usuario tenga que iniciar sesión.
Atributos estáticos SAML: Envía valores fijos de atributos, como un ID de cuenta o sitio, en cada aserción SAML. Configúralos en la sección Atributos estáticos en la pestaña de mapeo de atributos de la aplicación SAML o con staticAttributes en el API de gestión.
Cross-Origin-Opener-Policy para Personaliza tu UI: Elige same-origin-allow-popups o same-origin en Consola > Experiencia de inicio de sesión > Branding > Personaliza tu UI. El valor por defecto no envía encabezado, así que las apps que abren inicio de sesión en una ventana emergente siguen funcionando.
Buscar usuarios por datos personalizados: GET /api/users acepta un parámetro de consulta repetible customData, por ejemplo customData={"customId":114514}.
Buscar organizaciones por dominio de aprovisionamiento just-in-time: GET /api/organizations acepta el parámetro de consulta jitEmailDomain que devuelve las organizaciones en las que un usuario con ese dominio de correo se aprovisionaría.
hasPassword para miembros de la organización: GET /api/organizations/:id/users ahora muestra si cada miembro tiene una contraseña configurada.
Webhook deliveryId: Ahora cada carga útil de webhook lleva un deliveryId que permanece igual entre reintentos, así los receptores procesan cada entrega solo una vez. También es el ID de la entrada en el registro de auditoría de la entrega.
Esta versión incluye correcciones de seguridad en MFA, inicio de sesión social y empresarial, la API de cuenta y Logto Tunnel.
Acción requerida: sincronización de email para conectores OAuth 2.0 y Azure AD: El conector social estándar de OAuth 2.0 añade un interruptor de Desactivar sincronización de email, igualando el de Microsoft Azure AD. La simple actualización no cambia el comportamiento de conectores existentes, así que revisa cada conector social OAuth 2.0 y Azure AD y activa el interruptor cuando el proveedor no verifique que los usuarios sean dueños de los correos que retorna.
Inicio de sesión con Apple: El conector de Apple ahora toma el email del usuario solo del ID token de Apple y no retorna email si Apple lo marca como no verificado.
Autenticación multifactor: Los requerimientos MFA a nivel usuario y organización ahora tienen prioridad sobre configuraciones de cuenta que desactiven o salten MFA, y las verificaciones MFA se asocian a la cuenta para la que se crearon.
SSO empresarial: Los conectores SAML solo aceptan una aserción cuando la audiencia coincide exactamente con el Audience URI (SP Entity ID) del conector. Una nueva opción controla si nombres y logos de conectores SSO aparecen en la página de inicio antes de que coincida el dominio de correo.
API de cuenta y apps de terceros: Recuperar tokens de proveedor SSO social o empresarial almacenados, y leer códigos de respaldo, sesiones, grants y dispositivos de confianza ahora requiere una app de primera parte.
Más refuerzo: Los authorization codes, device codes, pushed authorization requests y tokens de un solo uso ahora son estrictamente de un solo uso. Los errores de solicitud de conectores se reducen a su nombre, código y mensaje antes de ser registrados o devueltos. Las solicitudes SAML malformadas se rechazan con 400. Logto Tunnel resuelve symlinks y ajusta solicitudes Range al servir archivos estáticos.
Safari y iOS antiguos: La página de inicio de sesión ya no carga en blanco en iOS y Safari anteriores a la versión 16.4.
Errores de inicio de sesión social más claros: Un proveedor inalcanzable ahora retorna 502 connector.social_provider_unreachable, una autorización rechazada retorna 401 connector.authorization_failed y los errores de conector muestran el mensaje real del proveedor en vez de {}.
Valores scope con espacios: Solicitudes de refresh token desde clientes como OpenAI Codex que envían un scope con un espacio al inicio ya no fallan con invalid_scope, así los usuarios permanecen conectados.
Validación de metadatos de aplicaciones: Crear o actualizar una aplicación ahora rechaza claves desconocidas en customClientMetadata, así errores como refreshTokenTtlInDay ya no pasan desapercibidos.
Enlaces de paginación: Los enlaces de paginación en los endpoints de lista ahora mantienen cada valor del parámetro de consulta repetido.
Marcadores de atributo SAML: Los atributos mapeados con nombres como o365role ahora llevan el valor real del usuario en lugar de un marcador literal.
Correcciones en conectores: Los conectores OAuth 2.0 y OIDC estándar aceptan expires_in como cadena y scope como arreglo en las respuestas de token, y el conector de Patreon pasa a la API v2 de Patreon para que el inicio de sesión funcione de nuevo.
Consola y Centro de Cuenta: La búsqueda de organizaciones funciona en reglas de control de acceso de aplicaciones, los nombres de recursos API se muestran completos al asignar permisos y el Centro de Cuenta ya no muestra "Powered by Logto" al cargar si el branding está oculto.
Guía de integración con Swift: Los ejemplos de código ahora usan un nombre de cliente coherente, solucionando el error Cannot find 'client' in scope. (Gracias a @timokoethe).
Revisa antes de actualizar: Revisa la sincronización de email en OAuth 2.0 y Azure AD, la audiencia de aserciones SAML y los cambios de API de cuenta de terceros bajo Refuerzo de seguridad.
Node.js 26: La imagen oficial de Docker ahora corre sobre Node.js 26. Logto soporta Node.js 22, 24 y 26, con versiones mínimas 22.23.4, 24.22.1 y 26.12.1.
Migración de base de datos requerida: Ejecuta el comando de alteración de base de datos (logto db alteration deploy) después de actualizar y antes de iniciar la nueva versión.
Inicio más resistente: Core y los comandos CLI de base de datos ahora reintentan la conexión a la base de datos ante fallos de DNS en lugar de salir inmediatamente.
Advertencia de endpoint de admin: Logto ahora registra una advertencia cuando una solicitud a /console no coincide con ningún endpoint de admin configurado, lo que ayuda a detectar un ADMIN_ENDPOINT mal configurado.
Gracias a los miembros de la comunidad cuyo trabajo se incluye en este lanzamiento:
@nicolaj0: webhook deliveryId (#9882), hasPassword para miembros de organización (#9883), filtro de organizaciones por dominio just-in-time (#9912), validación de claves customClientMetadata (#9931), errores sociales más claros (#9879, #9880), reintentos de conexión a base de datos (#9881, #9928), y manejo de errores de solicitudes de conectores (#9849)
@RaphaelFakhri: parámetros de consulta repetidos en enlaces de paginación (#9811) (primera contribución)
@mvanhorn: advertencia por falta de coincidencia en ADMIN_ENDPOINT (#9408)
@timokoethe: corrección en la guía de integración con Swift (#9788)