Logto v1.46.0 ist da. Es bringt OIDC Step-up-Authentifizierung, Anmeldung mit Ethereum, eine Möglichkeit das iOS "Passwort speichern"-Prompt zu erhalten, selbstverwaltete persönliche Zugriffstoken sowie eine Runde Sicherheitsverbesserungen.
SimengDeveloper
Verschwenden Sie keine Wochen mit Benutzerauthentifizierung
Bringen Sie sichere Apps schneller mit Logto auf den Markt. Integrieren Sie Benutzerauthentifizierung in Minuten und konzentrieren Sie sich auf Ihr Kernprodukt.
Logto v1.46.0 führt OIDC Step-up-Authentifizierung für sensible Aktionen ein, Anmeldung mit Ethereum, eine Möglichkeit, das iOS "Passwort speichern"-Prompt zu erhalten, sowie selbstverwaltete persönliche Zugriffstoken im Account Center, zusammen mit GeeTest CAPTCHA, SAML-Attributen mit statischem Wert und einer Runde Sicherheitsverbesserungen. Hier ist, was neu ist.
Apps können nun eine kürzlich erfolgte oder stärkere Anmeldung vor sensiblen Aktionen verlangen, unter Verwendung standardisierter OIDC-Parameter.
Anfordern und verifizieren: Übergebe acr_values und max_age in der Autorisierungsanfrage und lese dann acr, amr und auth_time aus ID-Token, Access-Tokens sowie Introspektionsantworten. Unterstützte ACR-Werte werden im Discovery-Dokument veröffentlicht.
Im Account Center integriert: Das Account Center autorisiert nun sensible Account API-Operationen mit einem frischen First-Party Access Token. Ist die Anmeldung nicht ausreichend aktuell, antwortet die Account API mit einer RFC 9470 Step-up-Herausforderung.
Konfigurierbares Zeitfenster: Lege fest, wie aktuell die Anmeldung mindestens sein muss unter Console > Sign-in experience > Account center > Recent authentication (standardmäßig 10 Minuten). Ein Client kann dennoch ein kürzeres Fenster mit max_age anfordern.
Abwärtskompatibel: Apps, die die Account API direkt aufrufen, können weiterhin eine Verifikationsrecord-ID für sensible Operationen nutzen.
Der neue Ethereum Wallet Social Connector (@logto/connector-siwe) ermöglicht es Nutzern, sich mit einer EVM-Wallet anzumelden. Nutzer mit einer Browser-Wallet (einem injizierten EIP-1193 Provider) signieren eine einmalige "Sign-In with Ethereum"-Nachricht (EIP-4361), ohne die Anmeldeseite zu verlassen. Eine Adresse funktioniert über alle unterstützten EVM-Chains hinweg, und Admins können die erlaubten Chain-IDs einschränken.
Unter iOS schließt die ASWebAuthenticationSession sofort, sobald sie die Callback-URL der App erkennt, was dazu führt, dass das System-Prompt "Passwort speichern" direkt nach einer Passwort-Anmeldung verschwindet.
Übergebe den neuen confirm_redirect_policy=password Anmeldeparameter, um nach Passworteingabe eine "Weiter"-Seite anzuzeigen. Die Seite kehrt erst zur App zurück, wenn der Nutzer auf "Weiter" klickt, sodass das Prompt auf dem Bildschirm bleibt. Ohne den Parameter leitet Logto wie zuvor sofort zurück.
Wenn persönliche Zugriffstoken im Account Center aktiviert sind, können Nutzer ihre eigenen Token auf der Account Center Security-Seite erstellen, umbenennen und widerrufen. Jeder Token wird nur einmal beim Erstellen angezeigt und verfällt spätestens nach 365 Tagen.
Dieselben Aktionen stehen über die Account API unter /api/my-account/personal-access-tokens zur Verfügung, mit dem neuen urn:logto:scope:personal_access_tokens Scope.
GeeTest CAPTCHA: GeeTest CAPTCHA v4 ist jetzt unter Console > Security > CAPTCHA verfügbar. Es ist für Anmeldeerlebnisse geeignet, die auf das chinesische Festland abzielen, wo Google reCAPTCHA oft nicht erreichbar ist.
MFA-Einrichtung für einen Nutzer erzwingen: Aktiviere Require MFA setup auf der Detailseite des Nutzers oder setze mfa.required über die Management API. Der Nutzer muss MFA beim nächsten Anmelden einrichten – unabhängig von der organisationweiten MFA-Richtlinie.
Nutzer entsperren: Eine neue Entsperrungsaktion auf der Nutzer-Detailseite entfernt Anmelde- und Sicherheitsverifikationssperren für die Nutzer-ID, die primäre E-Mail, die primäre Telefonnummer und den Benutzernamen gleichzeitig.
SHA-crypt Passwortimport: Nutzer mit SHA-crypt ($5$ und $6$) Passwort-Hashes können über den Legacy Passwortalgorithmus importiert werden.
access_denied bei abgebrochener Anmeldung: Das Abbrechen der Einwilligungsseite oder eine fehlgeschlagene Direktanmeldung führt nun zur Rückkehr des Nutzers zur Client-App mit access_denied. Eigene Anmelderlebnisse können eine Interaktion auf die gleiche Weise mit POST /api/experience/abort beenden.
login_hint für Account Center: Füge jedem Account Center-URL login_hint hinzu, um die Kennung vorab auszufüllen, wenn der Nutzer sich anmelden muss.
SAML-Attribute mit statischem Wert: Sende feste Attribut-Werte, wie etwa eine Account- oder Site-ID, in jeder SAML-Assertion. Konfiguriere sie im Bereich Static attributes des Attribut-Mappings der SAML-Anwendung oder über staticAttributes in der Management API.
Cross-Origin-Opener-Policy für Bring your UI: Wähle same-origin-allow-popups oder same-origin unter Console > Sign-in experience > Branding > Bring your UI. Standardmäßig wird kein Header gesendet, sodass Apps, die Anmeldung in einem Popup öffnen, weiterhin funktionieren.
Nutzer nach benutzerdefinierten Daten suchen: GET /api/users akzeptiert den wiederholbaren customData Query-Parameter, z. B. customData={"customId":114514}.
Organisationen nach just-in-time Provisioning Domain finden: GET /api/organizations akzeptiert den Query-Parameter jitEmailDomain, der die Organisationen zurückgibt, denen ein Nutzer mit dieser E-Mail-Domain zugewiesen würde.
hasPassword für Organisationsmitglieder: GET /api/organizations/:id/users zeigt nun an, ob jedes Mitglied ein Passwort gesetzt hat.
Webhook deliveryId: Jedes Webhook-Payload enthält nun eine deliveryId, die bei Retries gleich bleibt, sodass Empfänger jede Zustellung exakt einmal verarbeiten können. Sie ist auch die ID des Audit-Log-Eintrags der Zustellung.
Dieses Release enthält Sicherheitskorrekturen in den Bereichen MFA, Social- und Enterprise-Login, der Account-API und Logto Tunnel.
Aktion erforderlich: E-Mail-Sync für OAuth 2.0 und Azure AD Connectoren: Der Standard OAuth 2.0 Social Connector hat einen neuen Disable Email Sync-Schalter, der dem des Microsoft Azure AD Connectors entspricht. Ein Upgrade ändert das Verhalten bestehender Connectoren nicht, daher überprüfe jeden OAuth 2.0 und Azure AD Social Connector und aktiviere den Schalter, wenn der Anbieter die E-Mail-Adressen der Nutzer nicht prüft.
Anmelden mit Apple: Der Apple Connector übernimmt die E-Mail des Nutzers nur noch aus dem Apple ID Token und gibt keine E-Mail zurück, wenn Apple sie als ungeprüft markiert.
Multi-Faktor-Authentifizierung: Nutzer- und organisationsweite MFA-Anforderungen haben nun Vorrang vor Accounteinstellungen, die MFA ausschalten oder überspringen, und MFA-Prüfungen sind mit dem Account verknüpft, für den sie erstellt wurden.
Enterprise SSO: SAML Connectoren akzeptieren nun eine Assertion nur, wenn deren Audience exakt mit der Audience URI (SP Entity ID) des Connectors übereinstimmt. Eine neue Einstellung steuert, ob SSO Connectornamen und Logos bereits auf der Anmeldeseite gezeigt werden, bevor eine E-Mail-Domain übereinstimmt.
Account API und Drittanbieter-Apps: Das Abrufen gespeicherter Social- oder Enterprise-SSO-Provider-Token sowie das Einsehen von Backup-Codes, Sitzungen, Berechtigungen und vertrauenswürdigen Geräten erfordert nun eine First-Party-Anwendung.
Weitere Härtungen: Authorization Codes, Device Codes, Pushed Authorization Requests und Einmal-Tokens sind jetzt strikt nur einmal verwendbar. Connector-Fehler werden beim Logging/Zurückgeben auf Name, Code und Nachricht reduziert. Fehlerhafte SAML-Anfragen werden mit 400 abgelehnt. Logto Tunnel löst Symlinks auf und beschränkt Range-Requests beim Bereitstellen statischer Dateien.
Ältere Safari und iOS: Die Anmeldeseite lädt nicht mehr leer auf iOS und Safari-Versionen vor 16.4.
Klarere Social-Sign-In-Fehler: Ein unerreichbarer Anbieter gibt jetzt 502 connector.social_provider_unreachable zurück, eine verweigerte Autorisierung liefert 401 connector.authorization_failed, und Connector-Fehler zeigen die tatsächliche Fehlermeldung des Anbieters statt {}.
Space-gepolsterte scope-Werte: Refresh-Token-Anfragen von Clients wie OpenAI Codex, die ein scope mit führendem Leerzeichen senden, scheitern nicht mehr mit invalid_scope, sodass Nutzer angemeldet bleiben.
Applikations-Metadatenvalidierung: Das Erstellen oder Aktualisieren einer App lehnt nun unbekannte customClientMetadata-Keys ab, sodass Tippfehler wie refreshTokenTtlInDay nicht mehr stillschweigend durchgehen.
Seitenwechsel-Links: Paginierungslinks auf Listenendpunkten behalten jetzt alle Werte eines wiederholten Query-Parameters bei.
SAML-Attributplatzhalter: Zuordnungen mit Namen wie o365role tragen jetzt den Nutzerwert, statt eines festen Platzhalters.
Connector-Fehlerbehebungen: Standard OAuth 2.0 und OIDC Connectoren akzeptieren expires_in als String und scope als Array in Token-Antworten und der Patreon Connector nutzt jetzt die Patreon API v2, sodass die Anmeldung mit Patreon wieder funktioniert.
Konsole und Account Center: Orgasuche funktioniert in App-Berechtigungsregel, API-Resourcennamen werden bei der Vergabe von Berechtigungen vollständig angezeigt, und das Account Center blendet "Powered by Logto" beim Laden nicht mehr ein, wenn das Branding ausgeblendet ist.
Swift-Integrationsanleitung: Die Codebeispiele nutzen jetzt einen konsistenten Clientnamen und beheben so einen Cannot find 'client' in scope Fehler. (Dank an @timokoethe).
Vor Upgrade prüfen: Überprüfe OAuth 2.0 und Azure AD E-Mail-Sync, SAML Assertion Audience sowie Third-Party Account API Änderungen unter Sicherheitsverbesserungen.
Node.js 26: Das offizielle Docker-Image läuft jetzt auf Node.js 26. Logto unterstützt Node.js 22, 24 und 26, mit Mindestversionen 22.23.4, 24.22.1 und 26.12.1.
Datenbankmigration erforderlich: Führe nach dem Upgrade und vor dem Start der neuen Version den Befehl zur Datenbankänderung (logto db alteration deploy) aus.
Robusterer Start: Core und die CLI-Datenbankbefehle wiederholen jetzt den Verbindungsaufbau zur Datenbank bei DNS-Fehlern statt sofort zu beenden.
Admin-Endpunkt-Warnung: Logto protokolliert jetzt eine Warnung, wenn eine /console-Anfrage nicht zu einem konfigurierten Admin-Endpunkt passt – das hilft, ein falsch eingestelltes ADMIN_ENDPOINT zu erkennen.