Usługi AI dla firm Realizacje Blog FAQ Rozpocznij projekt

Autoryzacja — OAuth, JWT, magic link — porównanie

Logowanie to funkcja, którą użytkownik zauważa wyłącznie wtedy, gdy działa źle — a jednocześnie jeden z niewielu elementów aplikacji, którego błąd kosztuje utratę danych wszystkich klientów naraz. Ten poradnik porządkuje dostępne metody, ich koszt wdrożenia i sytuacje, w których każda z nich jest właściwym wyborem.

Krótka odpowiedź: dla aplikacji biznesowej domyślnym wyborem jest hasło z drugim składnikiem uwierzytelnienia, uzupełnione o logowanie kontem firmowym tam, gdzie klienci korzystają z Google Workspace albo Microsoft 365.

Magic link sprawdza się w produktach o rzadkim użyciu, gdzie zapominanie hasła jest głównym powodem porzucenia. Token JWT wybieraj wtedy, gdy naprawdę potrzebujesz bezstanowości — w typowej aplikacji z jednym serwerem sesja jest prostsza i bezpieczniejsza.

Uwierzytelnianie a autoryzacja

Dwa pojęcia mylone nagminnie, także w dokumentacji projektowej. Uwierzytelnianie odpowiada na pytanie, kim jest użytkownik. Autoryzacja — co wolno mu zrobić. To osobne warstwy i osobne decyzje projektowe: możesz zmienić sposób logowania bez dotykania uprawnień i odwrotnie.

Porównanie metod logowania

MetodaWygodaBezpieczeństwoKoszt wdrożeniaKiedy wybrać
HasłoŚredniaZależne od użytkownika2–4 dniDomyślnie, zawsze z drugim składnikiem
Konto Google / MicrosoftWysokaWysokie1–2 dniKlienci firmowi z pocztą w chmurze
Magic linkWysokaZależne od skrzynki pocztowej2–3 dniProdukty używane sporadycznie
Kod jednorazowy SMSWysokaŚrednie2–3 dniUżytkownicy bez firmowej poczty
Klucz sprzętowyŚredniaNajwyższe4–6 dniKonta administracyjne, dane wrażliwe
Logowanie firmowe SSOWysokaWysokie5–10 dniSprzedaż do dużych organizacji

Magic link ma jedną wadę, o której warto wiedzieć wcześniej. Bezpieczeństwo konta sprowadza się do bezpieczeństwa skrzynki pocztowej, a dostarczalność wiadomości bywa zawodna — filtry antyspamowe potrafią zatrzymać link logowania albo opóźnić go o kilka minut. Przy narzędziu używanym codziennie to źródło frustracji. Przy narzędziu używanym raz w miesiącu — realne ułatwienie.

Sesja czy token — decyzja przeceniana

Wybór między sesją serwerową a tokenem JWT bywa przedstawiany jako fundamentalny. W praktyce dla większości aplikacji webowych ma niewielkie znaczenie, a domyślny wybór powinien padać na sesję.

AspektSesja serwerowaToken JWT
Unieważnienie dostępuNatychmiastoweWymaga dodatkowego rejestru unieważnień
SkalowanieWymaga wspólnej pamięci sesjiBezstanowe z natury
RozmiarIdentyfikator w ciasteczkuCały token przy każdym żądaniu
ZłożonośćNiskaWyższa — dwa tokeny, odświeżanie, rotacja
Typowy błądBrak rotacji identyfikatora po zalogowaniuPrzechowywanie tokenu w pamięci przeglądarki

Token ma przewagę w trzech scenariuszach: gdy aplikacja mobilna korzysta z tego samego interfejsu, gdy usługi rozmawiają ze sobą bez udziału użytkownika i gdy ruch obsługuje wiele niezależnych serwerów bez wspólnego magazynu sesji. Poza nimi sesja daje mniej kodu i mniej możliwości popełnienia błędu.

Najczęstszy błąd przy JWT. Zapisanie tokenu w pamięci lokalnej przeglądarki. Każdy skrypt na stronie — także dołączony przez zewnętrzne narzędzie marketingowe — może go wtedy odczytać. Bezpieczniejszym miejscem jest ciasteczko z flagami zabezpieczającymi, niedostępne dla kodu strony.

Drugi składnik uwierzytelnienia

Samo hasło przestało być wystarczające niezależnie od jego długości, ponieważ najczęstszym wektorem ataku nie jest zgadywanie, tylko wykorzystanie haseł wyciekłych z innych serwisów. Drugi składnik neutralizuje tę klasę ataków niemal całkowicie.

Elementy, o których zapomina się przy wdrożeniu

Logowanie to nie jeden formularz, tylko kilkanaście ścieżek. Pominięcie którejkolwiek generuje zgłoszenia do wsparcia albo lukę bezpieczeństwa.

Budować samodzielnie czy użyć gotowej usługi

PodejścieKoszt początkowyKoszt stałyKiedy wybrać
Biblioteka we własnej aplikacji3–6 dni pracyBrakAplikacje z jednym systemem logowania, pełna kontrola nad danymi
Zewnętrzna usługa tożsamości1–3 dni pracyOpłata rosnąca z liczbą kontWiele aplikacji, wymóg SSO, szybki start
Własny serwer tożsamości10–20 dni pracyUtrzymanie serweraWiele systemów wewnętrznych, wymogi regulacyjne

Dla pojedynczej aplikacji biznesowej najczęściej najlepiej wypada sprawdzona biblioteka we własnym kodzie. Usługa zewnętrzna zaczyna się opłacać, gdy logowanie ma obsługiwać kilka produktów naraz albo gdy klienci korporacyjni wymagają integracji ze swoim systemem tożsamości.

Najczęstsze błędy

Logowanie w aplikacji sprzedawanej firmom

Przy sprzedaży oprogramowania większym organizacjom logowanie przestaje być wyłącznie kwestią wygody użytkownika, a staje się wymogiem zakupowym. Dział bezpieczeństwa klienta zadaje konkretne pytania, a brak odpowiedzi potrafi zablokować transakcję niezależnie od jakości produktu.

Kiedy warto to zbudować

Obsługa firmowych systemów tożsamości to zwykle od pięciu do dziesięciu dni pracy, więc nie należy jej wdrażać przedwcześnie. Sensownym momentem jest pojawienie się pierwszego klienta, który o nią pyta — najczęściej organizacji zatrudniającej powyżej stu osób.

Warto natomiast przygotować architekturę tak, żeby dołożenie tej możliwości nie wymagało przebudowy. W praktyce oznacza to oddzielenie warstwy uwierzytelniania od reszty aplikacji: kod sprawdzający uprawnienia nie powinien wiedzieć, w jaki sposób użytkownik został rozpoznany. Przy takim podziale dodanie kolejnej metody logowania jest rozszerzeniem, a nie zmianą dotykającą całego systemu — i mieści się w terminie, jaki daje klient w procesie zakupowym.

Podsumowanie

Dla większości aplikacji biznesowych właściwym zestawem jest hasło z drugim składnikiem oraz opcjonalne logowanie kontem firmowym. Magic link ma sens tam, gdzie użytkownik loguje się rzadko, a token JWT tam, gdzie naprawdę potrzeba bezstanowości.

Znacznie ważniejsze od wyboru metody jest domknięcie wszystkich ścieżek pobocznych: odzyskiwania hasła, zmiany adresu e-mail, zaproszeń, wygasania sesji i rejestru logowań. To w nich, a nie w samym formularzu logowania, powstaje większość realnych problemów bezpieczeństwa.

Najczęstsze pytania

Dla typowej aplikacji webowej sesja serwerowa jest prostsza i bezpieczniejsza, przede wszystkim dlatego, że pozwala natychmiast unieważnić dostęp. Token JWT wybieraj, gdy z tego samego interfejsu korzysta aplikacja mobilna, gdy usługi komunikują się między sobą albo gdy ruch obsługuje wiele serwerów bez wspólnego magazynu sesji.

Jest tak bezpieczny jak skrzynka pocztowa użytkownika — przejęcie poczty oznacza przejęcie konta. To poziom porównywalny z odzyskiwaniem hasła przez e-mail, które i tak istnieje w większości aplikacji. Główną wadą praktyczną jest dostarczalność: filtry antyspamowe potrafią opóźnić lub zatrzymać wiadomość z linkiem.

Dla kont administracyjnych i wszędzie tam, gdzie przetwarzane są dane osobowe lub finansowe — tak. Najczęstszym sposobem przejęcia konta nie jest łamanie hasła, lecz użycie hasła wyciekłego z innego serwisu, a drugi składnik neutralizuje tę klasę ataków niemal całkowicie. Dla zwykłych użytkowników może pozostać opcjonalny, ale warto go promować.

Logowanie hasłem wraz z odzyskiwaniem, blokadą prób i drugim składnikiem to zwykle 3–6 dni pracy przy użyciu sprawdzonej biblioteki. Dodanie logowania kontem Google lub Microsoft to kolejny dzień lub dwa. Integracja z firmowym systemem tożsamości klienta korporacyjnego zajmuje od pięciu do dziesięciu dni.

Nie. Praktyka pokazuje, że wymuszona rotacja prowadzi do haseł słabszych, tworzonych według schematu i zapisywanych poza systemem. Znacznie skuteczniejsze jest sprawdzanie, czy hasło nie występuje w znanych wyciekach, wymóg odpowiedniej długości oraz włączenie drugiego składnika uwierzytelnienia.

Convert Studio realizuje projekty z tego obszaru dla firm w całej Polsce. Zobacz: Aplikacje webowe → · Lokalizacje →

Bezpłatna wycena Twojego projektu

Opisz w kilku zdaniach, co chcesz zbudować — stronę, aplikację czy sklep. Odpowiadamy w ciągu 24 godzin roboczych konkretną propozycją zakresu i harmonogramu. Konsultacja i wycena są bezpłatne, bez zobowiązań.

Odpowiedź w 24 h roboczych. Dane wykorzystujemy wyłącznie do kontaktu w sprawie zapytania — polityka prywatności.