• lanzamiento

Actualizaciones de producto de Logto

Logto v1.40.0 trae un selector de rango de tiempo para los registros de auditoría, cargas útiles webhooks de membresía de organización más enriquecidas, grandes mejoras de rendimiento para organizaciones grandes y varias mejoras de calidad de vida para la autoinstalación.

Yijun
Yijun
Developer

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.
Comenzar
Product screenshot

Logto v1.40.0 es una versión enfocada en robustecer la plataforma. Hace que los registros de auditoría sean prácticos a gran escala, te dice exactamente qué cambió en los webhooks de membresía de organizaciones, acelera las consultas de organizaciones en tenants grandes y elimina algunos puntos de fricción de larga data para los despliegues autoinstalados. También llegan tres nuevos conectores. Esto es lo nuevo.

Registros de auditoría que realmente puedes delimitar

Los registros de auditoría son más útiles cuando algo acaba de pasar, pero hasta ahora, la Consola obtenía una ventana sin límite, lo que hacía lentas las consultas en tenants con grandes volúmenes de registros.

Esta versión añade un selector de rango de tiempo a la página de registros de auditoría, que por defecto muestra los últimos 7 días. Obtienes ventanas predefinidas (Última 1 hora, Últimas 24 horas, Últimos 7 días, Últimos 30 días) y un rango de fechas personalizado, y los registros más antiguos siguen a tu alcance simplemente ampliando la ventana (#8810).

Debajo del capó, la Management API gana parámetros de consulta start_time y end_time en GET /api/logs y GET /api/hooks/{id}/recent-logs (límites exclusivos en milisegundos unix), así que también puedes delimitar las consultas programáticamente (#8806). Para los tenants más grandes, el nuevo parámetro enableCap=true interrumpe la consulta de conteo en alrededor de 10,000 filas y devuelve un encabezado Total-Number-Is-Capped: true, cambiando el total exacto por una respuesta que evita el statement_timeout; la Consola cambia a una vista de anterior/siguiente cuando se alcanza el límite (#8796, #8802). El comportamiento predeterminado sin el parámetro no cambia.

Los webhooks de membresía de organización ahora te dicen qué cambió

El webhook Organization.Membership.Updated solía avisarte de que cambió la membresía, pero no qué cambió. Ahora lleva campos delta explícitos — addedUserIds / removedUserIds y addedApplicationIds / removedApplicationIds — a través de los endpoints de membresía, además de addedUserIds en la aceptación de invitaciones y aprovisionamiento just-in-time (JIT por dominio de correo electrónico y SSO empresarial) (#8840).

Esto es completamente aditivo y no rompe la compatibilidad: los deltas vacíos se omiten y cada array tiene un máximo de 5000 entradas para operaciones masivas (conciliar vía GET /organizations/:id/users o .../applications si lo superas). Consulta la referencia del webhook para el contrato completo. Este cambio reemplaza una propuesta anterior de la comunidad — crédito a @chiche84 (#8752).

Aprovechando, el endpoint GET /api/my-account/sessions también añade una bandera isCurrent en cada entrada, para que las interfaces de gestión de sesiones puedan marcar la fila de "Este dispositivo" y evitar revocar la sesión actual (#8731).

Organizaciones que siguen rápidas mientras crecen

Varios cambios están dirigidos a tenants con organizaciones grandes:

  • GET /organizations/:id/users ahora agrega roles a través de una subconsulta LATERAL, de modo que LIMIT reduce el conjunto de usuarios antes de chequear los roles — en vez de materializar todo el join members × roles en cada petición paginada (#8826).
  • Dos nuevos índices secundarios aceleran las búsquedas inversas: uno en organization_user_relations (tenant_id, user_id), que se usa en cada inicio de sesión y por el middleware de membresía (#8818), y otro en organization_role_user_relations (tenant_id, organization_id, user_id), utilizado por getUserScopes y los joins de roles por usuario (#8819).
  • PUT /organizations/:id/users ahora utiliza una nueva consulta basada en deltas que solo escribe las filas que realmente cambiaron, en vez de reescribir cada fila de membresía en cada llamada — y preserva los roles de los miembros que siguen en la organización tras la actualización (#8820).

Centro de cuenta y correcciones al inicio de sesión

  • Términos en el flujo de iniciar sesión a registrarse. Cuando la política de acuerdos requiere marcar la casilla solo en el registro, iniciar sesión con un email o teléfono que no existe y luego elegir "crear una nueva cuenta" ahora solicita aceptar los términos antes de crear la cuenta — igualando los flujos de registro dedicado y registro social/SSO (#8835).
  • Configuración de contraseña inicial. Los usuarios sin contraseña, correo o teléfono ahora pueden definir su primera contraseña mediante la Account API sin un registro de verificación (#8746).
  • Reautenticación silenciosa. Ante un error de user-info — por ejemplo, un token de acceso caducado tras cambiar de usuario en el mismo navegador — el Centro de Cuenta reautentica con prompt=none en vez de redirigir a la pantalla de login, gracias a @taka-guevara (#8785).
  • Caducidad de sesión y callbacks sociales más limpios. Las sesiones caducadas en el Centro de Cuenta redirigen sin mostrar el error manual de inicio de sesión (#8830), el callback de vinculación social ahora lee correctamente connectorId (#8758) y la etiqueta del interruptor de verificación en dos pasos es más clara (#8792).
  • i18n. Se corrigió la traducción al chino de "Passkey" en las frases MFA, gracias a @rotempasharel1 (#8870).

Conectores nuevos y mejorados

Esta versión añade tres conectores y mejora varios más, varios de ellos de la comunidad:

  • Conector de email MailJunky para emails de autenticación transaccional, contribuido por @devadarshh (#8638).
  • Conector SMS SMSBao para verificación de SMS doméstico, contribuido por @wintbiit (#8871).
  • Conector Aliyun SMS authentication service, contribuido por @CertStone (#8385).
  • Aliyun Direct Mail ahora permite configurar la región de Direct Mail (#8892).
  • WeCom obtiene perfiles de usuario más ricos mediante llamadas adicionales a la API, contribuido por @liyujun-dev (#8191).
  • SMTP auth ahora puede omitir user y pass, así que los relays que autorizan por IP o VLAN funcionan sin credenciales falsas (#8888).
  • Connector Kit mejora la detección de URLs de branding de emails para evitar falsos positivos en abreviaturas con puntos, gracias a @aayushbaluni (#8747).

Para usuarios autoinstalados

Algunos cambios suavizan los despliegues OSS:

Configuración admin en entorno aislado. Los comandos install y db seed ahora aceptan la bandera --dapc (alias --disable-admin-pwned-password-check). La política de contraseñas inicial del tenant admin habilita el chequeo de brechas de Have I Been Pwned, llamando a api.pwnedpasswords.com en cada contraseña admin — y cuelga el primer registro admin si ese endpoint no es accesible. Usando --dapc, la política se inicializa con esa verificación deshabilitada, así que el registro admin ya no depende del acceso a Internet. (Crédito a @darcyYe, #8859)

Claves de firma admin desde la base de datos. Las instalaciones OSS ahora obtienen las claves de firma del tenant admin directamente de la base de datos, eliminando los mapeos extra de host/DNS necesarios para que el contenedor de Logto obtuviera su propia configuración OIDC de tenant admin mediante un endpoint externo (#8869).

Migración obligatoria. La v1.40.0 trae alteraciones del esquema de base de datos (los nuevos índices de relaciones de organización y columnas internas extra). Tras actualizar a la nueva versión, ejecuta el paso de alteración de base de datos antes de iniciar el servidor. Consulta la guía de actualización.

Comienza ahora

¿Listo para actualizar? Consulta nuestra guía de actualización para instrucciones paso a paso.

Para la lista completa de cambios, revisa la página de lanzamientos de GitHub.

¿Tienes preguntas o comentarios? Únete a nuestro Discord o abre una issue en GitHub.