Nie do końca. Jeżeli przez token rozumiemy JWT lub podobny mechanizm, to różnica polega na tym w jaki sposób zarządzamy uprawnieniami użytkownika i gdzie są przechowywane informacje.
Sesja
Mamy dwóch bohaterów: użytkownika i serwis.
Użytkownik loguje się za pomocą loginu i hasła. Po stronie serwisu tworzymy obiekt – sesję, identyfikator sesji jest przekazywany w komunikacji z użytkownikiem, a wewnątrz serwisu masz kilka opcji. Pierwsza to przekazywanie identyfikatora sesji każdorazowa weryfikacja, czy użytkownik może coś zrobić czy nie w danym µSerwisie. Druga to stworzenie czegoś w rodzaju API Gateway, które będzie weryfikować uprawnienia użytkownika i przez które przechodzi cały ruch. Trzecie, to wygenerowanie tokenu z informacjami o użytkowniku i przesyłanie go między µSerwisami.
W tym podejściu to serwis ma wszystkie potrzebne informacje o użytkowniku i to on wewnętrznie zarządza uprawnieniami. W dodatku to na serwisie leży odpowiedzialność za bezpieczeństwo.
Wylogowanie polega na usunięciu sesji.
Token
Tutaj mamy trzech bohaterów: użytkownika, serwis i usługę uwierzytelniania (dalej UU).
Użytkownik loguje się w UU, a ta przekazuje token zawierający informacje czy to do niego czy to do serwisu. Nadal w komunikacji wewnętrznej przekazujemy sobie token. Tak samo jak w komunikacji z użytkownikiem.
Różnica polega na tym gdzie przechowywane są dane o użytkowniku i kto nimi zarządza. UU może być zewnętrzne lub wewnątrz organizacji. Serwis będzie miał wszystkie potrzebne informacje w tokenie. Jednak użytkownik może, o ile ma dostęp do UU, ograniczyć informacje dostępne dla serwisu. Serwis nie przechowuje też żadnych danych użytkownika związanych z uprawnieniami.
Wylogowanie w takim układzie polega na usunięciu tokenu I powiadomieniu UU, że token jesty już nieważny. Dodatkowo tokeny mają swój czas życia i wygasają jeżeli nie zostaną odnowione.