Uwierzytelnianie za pomocą magicznego linku
Dowiedz się, jak wdrożyć magiczne linki do logowania bez hasła, rejestracji tylko na zaproszenie i zaproszeń dla członków organizacji za pomocą jednorazowych tokenów.
Co to jest magiczny link?
Magiczny link to metoda uwierzytelniania bez hasła, w której użytkownik otrzymuje jednorazowy link do logowania za pośrednictwem e-maila (lub SMS-a). Kliknięcie linku loguje go bez konieczności podawania hasła.
Oto kilka kluczowych cech bezpieczeństwa magicznych linków:
- Token jednorazowego użytku: Po kliknięciu token staje się nieważny, aby zapobiec ponownemu użyciu.
- Wygaśnięcie linku: Magiczny link powinien mieć krótki czas wygaśnięcia (np. 10 minut) dla zwiększenia bezpieczeństwa.
- Limitowanie tempa: Zapobiegaj nadużyciom, ograniczając liczbę wysyłanych magicznych linków w określonym przedziale czasowym.
- Powiązanie z urządzeniem/przeglądarką (Opcjonalne): Ogranicz użycie linku do oryginalnego urządzenia lub adresu IP, aby zapobiec przechwyceniu.
Skład magicznego linku
Magiczny link składa się z:
- Trasa URL: Wskazuje stronę docelową dla Twojej aplikacji.
- Token jednorazowy: Unikalny token używany jednorazowo do uwierzytelniania bez hasła.
- E-mail użytkownika: Używany do weryfikacji autentyczności tokena i tożsamości użytkownika.
- Dodatkowe parametry: Opcjonalnie, w zależności od potrzeb Twojej aplikacji.
Na przykład magiczny link może wyglądać tak:
Aby utworzyć magiczny link, musisz wygenerować jednorazowy token, bezpiecznie go wysłać do użytkownika, a następnie go zweryfikować, gdy użytkownik kliknie link.
Przebieg pracy z magicznym linkiem
- Użytkownik prosi o magiczny link: Użytkownik wpisuje swój e-mail w Twojej aplikacji.
- Generowanie tokenu jednorazowego: Serwer generuje token i wysyła go jako link poprzez e-mail.
- Użytkownik klika link: Użytkownik klika link w e-mailu.
- Weryfikacja tokenu: Serwer sprawdza, czy token jest ważny.
- Użytkownik jest uwierzytelniony: Jeśli token jest ważny, użytkownik jest zalogowany.
Jak zaimplementować magiczne linki z Logto?
Krok 1: Prośba o jednorazowy token
Użyj Management API Logto, aby utworzyć jednorazowy token.
Przykładowe dane w ciele żądania:
Krok 2: Skonstruuj swój magiczny link
Po uzyskaniu jednorazowego tokenu, możesz skonstruować magiczny link i wysłać go na adres e-mail końcowego użytkownika. Magiczny link powinien zawierać przynajmniej token i e-mail użytkownika jako parametry i kierować do strony docelowej w Twojej aplikacji. Na przykład https://twojaaplikacja.com/strona-docelowa
.
Oto prosty przykład, jak może wyglądać magiczny link:
Uwaga:
Nazwy parametrów w magicznym linku mogą być całkowicie dostosowywane. Możesz dodać dodatkowe informacje do magicznego linku w oparciu o wymagania Twojej aplikacji oraz zakodować wszystkie parametry URL.
Krok 3: Wywołaj przepływ uwierzytelniania za pomocą Logto SDK
Po tym, jak końcowy użytkownik kliknie magiczny link i przejdzie do Twojej aplikacji, możesz wydobyć parametry token
i email
z URL, a następnie wywołać funkcję signIn()
z Logto SDK, aby uruchomić przepływ uwierzytelniania.
Aby uzyskać więcej szczegółów, sprawdź Logto Docs - Magic Link (One-time Token).
Przypadki użycia magicznych linków
Magiczne linki mogą zastąpić pierwszy krok uwierzytelniania, ale nie mogą pominąć Uwierzytelniania wieloskładnikowego (MFA).
W Logto, generując magiczny link z jednorazowym tokenem, nie musisz określać, czy jest to do logowania, czy rejestracji. Automatycznie określamy przepływ w zależności od statusu rejestracji e-maila:
- Niezarejestrowany e-mail: Kliknięcie magicznego linku przekierowuje użytkowników do procesu tworzenia konta, pomijając wpisywanie i weryfikację e-maila. Użytkownicy przechodzą do ustawienia hasła, dodania profilu (np. pełnego imienia i nazwiska) lub skonfigurowania MFA, w zależności od ustawień rejestracji.
- Zarejestrowany e-mail: Kliknięcie magicznego linku przekrocza pierwszy etap weryfikacji (np. „e-mail + hasło” lub „e-mail + kod weryfikacyjny”). Użytkownik jest albo od razu zalogowany, albo proszony o ukończenie MFA, w zależności od ustawień logowania.
Logto obsługuje następujące scenariusze z magicznymi linkami:
- Rejestracja tylko na zaproszenie: Dla narzędzi wewnętrznych lub produktów AI w fazie testowania możesz wyłączyć publiczną rejestrację i zaprosić konkretnych użytkowników za pomocą magicznego linku.
- Zaproszenie członków organizacji: Dla produktów SaaS, użyj magicznych linków do zapraszania nowych członków do organizacji, ułatwiając proces członkostwa.
- Logowanie/Rejestracja: Wyślij magiczny link do logowania lub rejestracji za pomocą e-maila.
Obecnie nie obsługiwane:
- Resetowanie hasła za pomocą magicznego linku.
- Użycie numeru telefonu lub nazwy użytkownika jako identyfikatora.
Daj nam znać, jeśli potrzebujesz dalszej personalizacji.
Rejestracja tylko na zaproszenie z magicznym linkiem
Dla nowych produktów (np. narzędzi AI) w wewnętrznych testach lub dla narzędzi wewnętrznych możesz chcieć wyłączyć publiczną rejestrację i zezwolić tylko wybranym użytkownikom na dostęp do Twojej aplikacji. Aby to wdrożyć w Logto:
-
Przejdź do Konsola > Doświadczenie logowania > Logowanie i rejestracja > Opcje zaawansowane i wyłącz "Włącz rejestrację użytkownika", aby zamknąć publiczną rejestrację.
-
Zbierz adresy e-mail użytkowników, których chcesz zaprosić (np. za pośrednictwem swojej strony internetowej lub rekomendacji od istniejących użytkowników).
-
Utwórz i wyślij magiczny link zaproszenia, jak opisano powyżej (poproś o jednorazowy token, skomponuj magiczny link, uruchom uwierzytelnianie za pomocą Logto SDK).
Uwaga: Ustaw czas wygaśnięcia linku zaproszenia. Zaleca się, aby link był ważny przez co najmniej jeden dzień. Użyj następującego ciała żądania, aby wygenerować jednorazowy token:
-
Wyślij magiczny link na e-mail użytkownika (np.
https://twojaaplikacja.com/strona-docelowa?type=registrationInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Dostosuj szablon e-mail, taki jak:Kiedy użytkownicy klikną "Akceptuj zaproszenie", automatycznie zarejestrują się w Twojej usłudze, nawet przy wyłączonej publicznej rejestracji. Jest to określane jako "Zaproszenie ukierunkowane użytkownika".
Zaproszenie członków organizacji z magicznym linkiem
Dla produktów wielodziedzinowych (np. aplikacji SaaS jak Slack, GitHub, Vercel), zapewnij płynny proces zaproszenia członków do zarządzania członkostwami organizacji. Użyj magicznych linków do zwiększenia konwersji w zaproszeniach członków.
-
Postępuj zgodnie z Dokumentacją Logto, aby wdrożyć tworzenie organizacji, kontrolę dostępu opartą na rolach organizacyjnych i zarządzanie organizacją: Logto Organizations.
-
Ustaw przepływ pracy "Zaproś członków" w swoim produkcie. Przykład:
-
Postępuj zgodnie z tym przewodnikiem, aby Zaproś Członków Organizacji. Uwagi: Zapraszając członków, upewnij się, że ładunek żądania zawiera:
context: jitOrganizationIds
, aby określić, do której (których) organizacji użytkownik dołączy.- Ustaw dłuższy czas
expiresIn
(np. 2 dni lub 1 tydzień), aby umożliwić użytkownikom wystarczająco dużo czasu na zaakceptowanie zaproszenia.
Przykładowe dane żądania:
-
Wyślij link zaproszenia na adres e-mail użytkownika (np.
https://twojaaplikacja.com/strona-docelowa?type=organizationMemberInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Dostosuj swój szablon e-mail, na przykład:Kiedy użytkownicy klikną "Akceptuj zaproszenie", automatycznie się zarejestrują lub zalogują i automatycznie dołączą do organizacji.
Obsługa konfliktów kont
Co się stanie, jeśli użytkownik jest już zalogowany i kliknie inny magiczny link?
Aby prawidłowo obsłużyć konflikty kont, upewnij się, że:
- Unikaj dodawania
login
w "prośbie logowania": Nie ustawiaj prośby o logowanie, zawierająclogin
w niej. Jeśli zostanie ustawiona nieprawidłowo, Logto automatycznie zaloguje konto powiązane z tokenem magicznego linku, omijając prośbę o zmianę konta. - Zachowaj istniejące tokeny: Wywołując funkcję
signIn()
, określ parametrclearTokens: false
, aby zapobiec usuwaniu istniejących tokenów. Jeśli ta opcja jest używana, upewnij się, że ręcznie usuniesz tokeny na stronie callback przy logowaniu.
Po odpowiedniej konfiguracji, doświadczenie użytkownika będzie wyglądać następująco:
- Magiczny link dla bieżącego konta: Jeśli użytkownik jest już zalogowany i kliknie magiczny link dla tego samego konta, Logto zweryfikuje jednorazowy token i przypisze użytkownika do określonych organizacji, jeśli to konieczne.
- Magiczny link dla innego konta: Jeśli użytkownik jest zalogowany i kliknie magiczny link dla innego konta, Logto poprosi użytkownika o:
- Kontynuację jako nowe konto: Logto przełącza się na nowe konto po weryfikacji tokenu.
- Pozostanie przy bieżącym koncie: Logto pomija weryfikację tokenu i zwraca użytkownika do bieżącego konta.
Obsługa stron z błędami dla unieważnionego magicznego linku
Kiedy użytkownicy klikną nieprawidłowy magiczny link, zostają przekierowani na stronę błędu z jasnym wyjaśnieniem problemu. Poniżej możliwe scenariusze błędów i ich wiadomości:
Nazwa | Opis |
---|---|
token_not_found | Aktywny token nie znaleziony dla podanego e-maila i tokenu. |
email_mismatch | Niezgodność e-maila z podanym tokenem. |
token_expired | Token wygasł. |
token_consumed | Token został użyty. |
token_revoked | Token został unieważniony. |
cannot_reactivate_token | Nie można ponownie aktywować tokenu. |
Każda strona błędu dostarczy konkretnej wiadomości, pomagając użytkownikom zrozumieć powód nieprawidłowego magicznego linku i wskazując, jakie kroki podjąć dalej. Na przykład:
Podsumowanie
Logto zapewnia bezpieczeństwo na poziomie przedsiębiorstwa dzięki elastycznym, bezhasłowym przepływom logowania za pomocą magicznych linków. To prosta, ale potężna metoda tworzenia płynnych doświadczeń użytkowników — niezależnie od tego, czy zapraszasz użytkowników do dołączenia do organizacji, pozwalasz im na łatwe tworzenie kont, czy zapewniasz bezproblemowe uwierzytelnianie. A ponieważ Logto radzi sobie z trudnymi sytuacjami takimi jak konflikty kont i wygasłe tokeny, Twoi użytkownicy otrzymują bezpieczny, pozbawiony frustracji proces za każdym razem.
Gotowy, aby unowocześnić swoje zarządzanie tożsamością z niezawodnym uwierzytelnianiem?