Logto v1.46.0 jest już dostępny. Wprowadza uwierzytelnianie OIDC step-up, Logowanie przez Ethereum, sposób na zachowanie monitu „Zapisz hasło” w iOS, samoobsługowe osobiste tokeny dostępu oraz kolejną turę wzmocnień bezpieczeństwa.
SimengDeveloper
Przestań tracić tygodnie na uwierzytelnianie użytkowników
Uruchamiaj bezpieczne aplikacje szybciej z Logto. Zintegruj uwierzytelnianie użytkowników w kilka minut i skup się na swoim głównym produkcie.
Logto v1.46.0 wprowadza uwierzytelnianie OIDC step-up dla wrażliwych akcji, Logowanie przez Ethereum, sposób na zachowanie systemowego monitu iOS „Zapisz hasło” oraz samoobsługowe osobiste tokeny dostępowe w Centrum Konta, a także GeeTest CAPTCHA, statyczne atrybuty SAML oraz kolejną rundę wzmacniania bezpieczeństwa. Oto, co nowego.
Aplikacje mogą teraz wymagać świeżego lub silniejszego logowania przed wykonaniem wrażliwych czynności, używając standardowych parametrów OIDC.
Wyślij i zweryfikuj: Przekaż acr_values oraz max_age przy żądaniu autoryzacji, następnie odczytaj wartości acr, amr i auth_time z tokenów ID, tokenów dostępu i odpowiedzi na introspekcję. Obsługiwane wartości ACR są ogłaszane w dokumencie discovery.
Wbudowane w Centrum Konta: Centrum Konta teraz autoryzuje wrażliwe operacje Account API świeżym tokenem dostępowym pierwszej strony. Gdy logowanie nie jest wystarczająco świeże, Account API odpowiada wyzwaniem step-up zgodnym z RFC 9470.
Konfigurowalny czas: Ustaw jak dawne musi być logowanie pod Konsola > Doświadczenie logowania > Centrum konta > Ostatnia weryfikacja (domyślnie 10 minut). Klient może ciągle żądać krótszego czasu przez max_age.
Wsteczna kompatybilność: Aplikacje, które wołają Account API bezpośrednio, mogą nadal używać identyfikatora zapisu weryfikacji dla czynności wrażliwych.
Nowy łącznik społecznościowy Ethereum Wallet (@logto/connector-siwe) umożliwia użytkownikom logowanie przy użyciu portfela EVM. Użytkownicy z portfelem przeglądarkowym (wstrzyknięty provider EIP-1193) podpisują jednokrotny komunikat Sign-In with Ethereum (EIP-4361) bez opuszczania strony logowania. Jeden adres działa na wszystkich obsługiwanych łańcuchach EVM, a administratorzy mogą ograniczyć dozwolone identyfikatory łańcuchów.
Na iOS, ASWebAuthenticationSession zamyka się natychmiast po wykryciu adresu zwrotnego aplikacji, przez co systemowy monit „Zapisz hasło” znika zaraz po zalogowaniu hasłem.
Dodaj nowy parametr logowania confirm_redirect_policy=password, aby pokazać stronę „Kontynuuj” po wprowadzeniu hasła przez użytkownika. Strona powraca do aplikacji tylko po wyborze „Kontynuuj” przez użytkownika, dzięki czemu monit pozostaje na ekranie. Bez tego parametru Logto przekierowuje z powrotem od razu jak wcześniej.
Gdy osobiste tokeny dostępowe są włączone w Centrum Konta, użytkownicy mogą tworzyć, zmieniać nazwę i unieważniać własne tokeny na stronie Bezpieczeństwo w Centrum Konta. Każdy token jest pokazywany tylko raz podczas tworzenia i wygasa maksymalnie po 365 dniach.
Te same czynności dostępne są poprzez Account API pod /api/my-account/personal-access-tokens, z nowym zakresem urn:logto:scope:personal_access_tokens.
GeeTest CAPTCHA: GeeTest CAPTCHA v4 jest teraz dostępne pod Konsola > Bezpieczeństwo > CAPTCHA. Sprawdza się w doświadczeniach logowania skierowanych na Chiny kontynentalne, gdzie Google reCAPTCHA bywa często niedostępne.
Wymuś konfigurację MFA dla użytkownika: Włącz Wymuś konfigurację MFA na stronie szczegółów użytkownika albo ustaw mfa.required przez Management API. Użytkownik musi przejść konfigurację MFA przy następnym logowaniu, niezależnie od polityki organizacyjnej MFA.
Odblokuj użytkownika: Nowa akcja odblokowania na stronie szczegółów użytkownika usuwa blokady logowania i weryfikacji bezpieczeństwa dla ID użytkownika, głównego adresu e-mail, głównego telefonu i nazwy użytkownika jednocześnie.
Importowanie haseł SHA-crypt: Importuj użytkowników z haszami haseł SHA-crypt ($5$ i $6$) używając algorytmu hasła Legacy.
access_denied przy anulowaniu logowania: Anulowanie zgody lub nieudane logowanie bezpośrednie teraz zwraca użytkownika z powrotem do aplikacji z access_denied. Własne doświadczenia logowania mogą zakończyć interakcję tak samo przez POST /api/experience/abort.
login_hint dla Centrum Konta: Dodaj login_hint do dowolnego adresu Centrum Konta, aby wstępnie wypełnić identyfikator, kiedy użytkownik musi się zalogować.
Statyczne atrybuty SAML: Wysyłaj stałe wartości atrybutów, takie jak identyfikator konta lub witryny w każdej asercji SAML. Skonfiguruj je w sekcji Static attributes na karcie mapowania atrybutów aplikacji SAML lub przez staticAttributes w Management API.
Cross-Origin-Opener-Policy dla Bring your UI: Wybierz same-origin-allow-popups lub same-origin pod Konsola > Doświadczenie logowania > Branding > Bring your UI. Domyślnie nagłówek nie jest wysyłany, więc aplikacje otwierające logowanie w popupie nadal działają.
Wyszukiwanie użytkowników po danych niestandardowych: GET /api/users akceptuje powtarzalny parametr zapytania customData, np. customData={"customId":114514}.
Znajdowanie organizacji po domenie provisionowania just-in-time: GET /api/organizations obsługuje parametr zapytania jitEmailDomain, który zwraca organizacje, do których trafiłby użytkownik z podaną domeną e-mailową.
hasPassword dla członków organizacji: GET /api/organizations/:id/users pokazuje teraz, czy każdy członek ma ustawione hasło.
Webhook deliveryId: Każdy payload webhook'a niesie teraz deliveryId, który jest niezmienny podczas ponownych prób, dzięki czemu odbiorcy mogą przetwarzać każdą dostawę dokładnie raz. Jest to też identyfikator wpisu w logach audytu.
Ta wersja zawiera poprawki bezpieczeństwa dotyczące MFA, logowania społecznościowego i korporacyjnego, Account API oraz Logto Tunnel.
Wymagana akcja: synchronizacja e-mail dla łączników OAuth 2.0 i Azure AD: Standardowy łącznik społecznościowy OAuth 2.0 dodaje przełącznik Wyłącz synchronizację e-mail, zgodnie z łącznikiem Microsoft Azure AD. Sama aktualizacja nie zmienia zachowania istniejących łączników; sprawdź więc każdy łącznik OAuth 2.0 i Azure AD i włącz przełącznik dla dostawców, którzy nie weryfikują własności adresów e-mail użytkowników.
Logowanie przez Apple: Łącznik Apple pobiera e-mail użytkownika tylko z tokenu Apple ID i nie zwraca e-maila, gdy Apple oznaczy go jako niezweryfikowany.
Uwierzytelnianie wieloskładnikowe: Wymogi MFA na poziomie użytkownika i organizacji mają teraz pierwszeństwo przed ustawieniami konta wyłączającymi lub omijającymi MFA, a weryfikacje MFA są powiązane z kontem, na którym zostały utworzone.
Enterprise SSO: Łączniki SAML przyjmują teraz asercję tylko wtedy, gdy jej audience dokładnie odpowiada Audience URI (SP Entity ID) łącznika. Nowe ustawienie kontroluje, czy nazwy i logo łączników SSO pojawią się na stronie logowania przed dopasowaniem domeny e-mail.
Account API i aplikacje zewnętrzne: Pobieranie przechowywanych tokenów dostawców SSO społecznych lub korporacyjnych oraz odczytywanie kodów zapasowych, sesji, zgód i zaufanych urządzeń wymaga teraz aplikacji pierwszej strony.
Dalsze wzmocnienia: Kody autoryzacyjne, kody urządzenia, wypchnięte żądania autoryzacji i tokeny jednorazowe są teraz ściśle jednorazowego użytku. Błędy żądań łączników są redukowane do nazwy, kodu i komunikatu przed ich zalogowaniem lub zwrotem. Nieprawidłowe żądania SAML są odrzucane z kodem 400. Logto Tunnel rozwiązuje symlinki i ogranicza żądania Range przy serwowaniu plików statycznych.
Starszy Safari i iOS: Strona logowania nie ładuje się już na biało na iOS i Safari starszych niż 16.4.
Jaśniejsze błędy logowania społecznościowego: Gdy dostawca jest nieosiągalny, zwracane jest 502 connector.social_provider_unreachable, odrzucona autoryzacja daje 401 connector.authorization_failed, a błędy łączników pokazują właściwy komunikat dostawcy zamiast {}.
Odstępy przy scope: Żądania odświeżenia tokena od klientów (np. OpenAI Codex) wysyłające scope ze spacją na początku nie kończą się już błędem invalid_scope, więc użytkownicy pozostają zalogowani.
Walidacja metadanych aplikacji: Tworzenie lub aktualizacja aplikacji odrzuca nieznane klucze customClientMetadata, więc literówki (np. refreshTokenTtlInDay) nie przechodzą już niezauważone.
Linki paginacji: Linki paginacji na punktach listujących zachowują każdą wartość powtarzanego parametru zapytania.
Podstawienia atrybutów SAML: Mapowane atrybuty o nazwach takich jak o365role teraz faktycznie przenoszą wartość użytkownika zamiast literału.
Poprawki łączników: Standardowe łączniki OAuth 2.0 i OIDC akceptują expires_in jako string i scope jako tablicę w odpowiedziach tokenowych, a łącznik Patreon przeszedł na API v2, dzięki czemu logowanie przez Patreon działa ponownie.
Konsola i Centrum Konta: Wyszukiwanie organizacji działa w regułach dostępu do aplikacji, nazwy zasobów API są teraz pokazywane w całości przy przypisywaniu uprawnień, a Centrum Konta nie wyświetla już „Powered by Logto” podczas ładowania przy ukrytym brandingu.
Przewodnik integracji Swift: Przykłady kodu używają teraz spójnej nazwy klienta, co rozwiązuje błąd Cannot find 'client' in scope. (Podziękowania dla @timokoethe).
Przejrzyj przed aktualizacją: Sprawdź synchronizację e-mail OAuth 2.0 i Azure AD, audience asercji SAML oraz zmiany związane z Account API stron trzecich opisane w sekcji Wzmocnienia bezpieczeństwa.
Node.js 26: Oficjalny obraz Dockera korzysta teraz z Node.js 26. Logto obsługuje Node.js 22, 24 i 26, w minimalnych wersjach 22.23.4, 24.22.1 i 26.12.1.
Wymagana migracja bazy danych: Uruchom polecenie zmiany struktury bazy (logto db alteration deploy) po aktualizacji i przed uruchomieniem nowej wersji.
Bardziej niezawodny start: Główne moduły i polecenia CLI bazy danych powtarzają połączenia w razie błędów DNS zamiast natychmiast kończyć.
Ostrzeżenie o endpointach administracyjnych: Logto zapisuje teraz ostrzeżenie, gdy żądanie /console nie pasuje do żadnego skonfigurowanego endpointu administratora, co pomaga wykryć błędnie ustawiony ADMIN_ENDPOINT.