Aktualizacje produktu Logto
🎉 Przedstawiamy naszą lipcową aktualizację: Logto API SDK, Sejf na tajne dane do przechowywania federacyjnych tokenów, zarządzaj TOTP i Kodami zapasowymi przez Account API i więcej!
Logto API SDK
TypeScript SDK do interakcji z Management API Logto przy użyciu uwierzytelniania za pomocą poświadczeń klienta.
Jak to działa:
- Utwórz aplikację machine-to-machine w Logto Console.
- Przyznaj aplikacji dostęp do Management API.
- Zainstaluj SDK przez npm:
npm install @logto/api
- Użyj
createManagementApi()
, aby utworzyć typowanego klienta Management API z poświadczeniami twojej aplikacji.
Najważniejsze funkcje:
- Automatycznie obsługuje uwierzytelnianie i odnawianie tokena OAuth.
- Wspiera zarówno Logto Cloud, jak i instancje self-hosted.
- Upraszcza integrację z Management API Logto, pozwalając ci skupić się na budowaniu funkcjonalności zamiast obsługi niskopoziomowych żądań API.
Sejf na tajne dane
Sejf na tajne dane to bezpieczne rozwiązanie w Logto do zarządzania wrażliwymi danymi użytkowników, w tym tokenami dostępu, kluczami API, kodami dostępu i innymi poufnymi informacjami. Dane te są zwykle wykorzystywane do dostępu do zewnętrznych usług w imieniu użytkowników, co czyni bezpieczne przechowywanie kluczowym.
Wsparcie dla federacyjnego przechowywania tokenów
Przechowywanie tokenów jest już wspierane zarówno dla społecznościowych, jak i korporacyjnych konektorów SSO. Po włączeniu tej opcji, Logto przechowuje zestaw tokenów wydanych przez dostawcę tożsamości po udanym uwierzytelnieniu. Aplikacje mogą następnie pobrać token dostępu później — bez konieczności ponownego uwierzytelniania użytkownika — aby wywołać zewnętrzne API.
Wspierane konektory:
- Konektory społecznościowe: GitHub, Google, Facebook, Standard OAuth 2.0 oraz Standard OIDC
- Korporacyjne konektory SSO: Wszystkie konektory SSO oparte na OIDC
Jak to działa:
- Włącz przechowywanie tokenów dla społecznościowych i korporacyjnych konektorów SSO w Logto Console lub przez Logto Management API.
- Po włączeniu, Logto automatycznie przechowuje zestaw tokenów wydanych przez dostawcę po udanym uwierzytelnieniu użytkownika.
- Pobierz zapisany token przez Account API, gdy będzie potrzebny.
Więcej szczegółów znajduje się w dokumentacji sejfu na tajne dane.
Dodaj TOTP i kody zapasowe przez Account API
Użytkownicy mogą teraz dodawać TOTP oraz kody zapasowe przy użyciu Account API.
POST /api/my-account/mfa-verifications/totp-secret/generate
: Generuj sekret TOTP.POST /api/my-account/mfa-verifications/backup-codes/generate
: Generuj kody zapasowe.POST /api/my-account/mfa-verifications
: Dodaj sekret TOTP lub kod zapasowy przy użyciu wygenerowanego sekretu lub kodów.GET /api/my-account/mfa-verifications/backup-codes
: Pobierz kody zapasowe.
Inne ulepszenia
- Konektory społecznościowe: Dodano wsparcie dla podania własnego parametru
scope
przy generowaniu URL autoryzacyjnego dla konektorów społecznościowych. Pozwala to na żądanie dodatkowych uprawnień od dostawcy społecznościowego podczas wywoływania Logto social verification endpoint. Jeśli scope zostanie podany, zostanie on użyty w żądaniu autoryzacyjnym; w innym przypadku użyty zostanie domyślny scope skonfigurowany w ustawieniach konektora. - Console: Aby lepiej wspierać nowe funkcje sejfu na tajne dane, przebudowaliśmy układ strony szczegółów użytkownika. Tożsamości społecznościowe i korporacyjne SSO użytkownika zostały teraz zorganizowane w nową sekcję Połączenia. Sekcja ta prezentuje wszystkie powiązane konektory użytkownika, pokazując informacje o zewnętrznej tożsamości oraz status przechowywania tokenów (jeśli dotyczy). Dla każdego połączenia dostępna jest też szczegółowa strona, zawierająca więcej informacji o powiązanej tożsamości i jej tokenach.
Poprawki błędów
Ograniczenie klucza obcego uwzględniające tenant dla tabeli organization_user_relations
Problem
Deweloperzy mogli omyłkowo przypisać user_id
z innego tenant-a do organizacji, powodując błędy 500 na endpointach API użytkowników organizacji. Oryginalna tabela organization_user_relations
miała ograniczenie klucza obcego tylko dla users (id)
, co pozwalało przypisać dowolny istniejący user ID niezależnie od separacji tenantów.
Przyczyna główna
Logto stosuje Row Level Security (RLS) na wszystkich tabelach, aby izolować dostęp do danych tenantów. Podczas łączenia tabeli users z organization_user_relations
, faktyczne dane użytkownika stają się niedostępne dla bieżącego tenant-a z powodu ograniczeń RLS, powodując, że zwracane dane użytkownika są null, co prowadzi do błędów serwera 500.
Rozwi ązanie
Dodano złożony klucz obcy (tenant_id, user_id)
wskazujący na users (tenant_id, id)
, aby zapewnić, że tenant ID relacji organizacja-użytkownik odpowiada tenant ID użytkownika. Zapewnia to prawidłową separację tenantów na poziomie bazy danych.