Pożegnanie z krótkimi sesjami – propozycja zastosowania mechanizmów Service Worker w celu usprawnienia zarządzania plikami cookie w internecie

William Denniss
Owen Campbell-Moore

Wszyscy jesteśmy zachwyceni tym, że w aplikacjach natywnych możesz prosić o zalogowanie się tylko raz i pamiętać, że chcesz się wylogować. Internet nie zawsze działa w ten sposób.

Urządzenia, zwłaszcza mobilne, są teraz bardziej osobiste, a coraz więcej witryn wysyła cały ruch przez HTTPS, co zmniejsza ryzyko kradzieży tokenów. W związku z tym witryny powinny ponownie rozważyć swoje zasady dotyczące krótkotrwałych plików cookie i wdrożyć bardziej przyjazne dla użytkownika sesje przez dłuższy czas.

Nawet jeśli chcesz, aby sesja trwała dłużej, niektóre witryny nie potwierdzają uwierzytelniania użytkownika przy każdym żądaniu (oznacza to, że nie można cofnąć pliku cookie sesji po jego wygenerowaniu). Zazwyczaj trwa to krótko, a użytkownik musi często logować się na konto, aby można było ponownie zweryfikować jego uwierzytelnianie. Pomaga to na przykład w zmienianiu hasła, co powoduje unieważnienie dotychczasowych sesji w określonym czasie.

Jeśli z tej metody korzystasz, udostępniamy rozwiązanie techniczne, które może pomóc Ci automatycznie ponownie zweryfikować bezstanowy plik cookie uwierzytelniania. Mechanizm ten działa dzięki dodatkowym długotrwałym tokenowi, którego można użyć do odświeżenia istniejącego krótkotrwałego pliku cookie uwierzytelniania. Wykorzystanie nowego wzorca mechanizmu Service Worker pozwala nam regularnie „meldować się” przy użyciu długotrwałego tokena, weryfikować uwierzytelnianie użytkownika (np. sprawdzać, czy nie zmienił on ostatnio haseł lub w inny sposób unieważnić sesję) i ponownie wysyłać nowy krótkotrwały plik cookie uwierzytelniania.

Praktyczna propozycja przejścia na bezpieczne, długie sesje w internecie

W tym poście opisujemy nową metodę, którą nazywamy 2-Cookie-Handoff (2CH). Mamy nadzieję, że ten artykuł dowie się od społeczności, czy takie podejście jest pozytywne, a jeśli tak, wspólnie z branżą nad udokumentowaniem sprawdzonych metod stosowania 2CH.

Skrypty service worker to nowa technologia obsługiwana przez wiele przeglądarek, takich jak Chrome, Firefox, Opera, a wkrótce w Edge. Umożliwiają przechwytywanie wszystkich żądań sieciowych z witryny przez wspólny punkt kodu u klienta bez konieczności modyfikowania istniejących stron. Pozwala to skonfigurować dla zalogowanych użytkowników instancję roboczą 2-CH, która może przechwytywać wszystkie żądania sieciowe wysyłane przez stronę i wymieniać tokeny tak samo jak w przypadku aplikacji mobilnych.

W większości przypadków Twój serwer ma już punkt końcowy używany przez aplikacje mobilne do uzyskiwania nowego tokena krótkotrwałego (zwykle przy użyciu protokołu OAuth). Aby włączyć powyższy wzorzec w internecie, trzeba zaktualizować ten punkt końcowy tak, aby rozpoznawał, kiedy skrypt jest wywoływany przez skrypt service worker, a następnie zwracał nowy, krótkotrwały plik cookie sesji sformatowany w sposób, jakiego oczekują inne strony w witrynie.

Jeśli serwer nie ma jeszcze takiego punktu końcowego, może go utworzyć tylko do zarządzania sesją przeglądarki.

Sekwencja przekazania 2 plików cookie

Wzorzec 2-tokenów z mechanizmami Service Worker jest podobny do wzorca OAuth 2.0. Jeśli masz już punkt końcowy tokena OAuth, prawdopodobnie możesz użyć go do uwierzytelniania w sieci za pomocą mechanizmów Service Worker.

Być może zastanawiasz się również, co się stanie, gdy użytkownik otworzy przeglądarkę, która nie obsługuje mechanizmów Service Worker. Jeśli zastosujesz powyższe podejście, nie zauważą żadnych różnic i nadal będą pojawiać się w krótkich sesjach.

Udostępniliśmy przykładowy klient i backend. Mamy nadzieję, że wypróbujesz to rozwiązanie i wypełnij ankietę na temat zarządzania sesjami.