OAuth, gdzie trzymać access token

0

Moja aplikacja to Spring + Angular, dodatkowo korzystam z z API Microsoftu. Flow wygląda tak:

  1. Wchodzę na swój front angularowy
  2. Dostaję przekierowanie na strone MS gdzie muszę się zalogować
  3. Przekierowuje mnie z powrotem do angulara, wraz z authorization_code
  4. Uderzam ze wspomnianym kodem do modulu springowego, tam wyciągany na jego podstawie jest access_token i zwracany do front endu
  5. Po stronie frontu, zapisuje access_token w sessionStorage,

Teraz mogę uderzać do swojego backendu z access_tokenem, a backend wykonuje z nim strzały do zabezpieczonych zasobów MS. Wszystko fajnie ale... czy to rozsądne trzymać access token w takim miejscu? Czy to bezpieczne przekazywać go ot tak przez RESTa?

0

No sam sobie odpowiedz na to pytanie. Twoim klientem jest SERVER a nie strona www wiec token powinien byc trzymany tylko na serwerze w aplikacji. Przeglądarka uwierzytelnia sie na serwerze na podstawie roznego sposobu na przyklad cookies ale nie ma to nic wpsolengo z Oauth. Ale niestety w twoim przypadku klient nie ma komponentu serwera bo wykonujesz (jak zrozumialem) zapyatania W JS zatem to przeglądarka jest klientem. (bo mowisz ze zapisujesz go w sessionStorage) Więc jak używasz TLS to możesz jeszcze przekierowywać zadania do zarejestrowanych END pointow. ale to tylko zmniejsza ryzyko nie eliminuje go calkowicie

0

Nie bardzo wiem jak to inaczej rozegrać szczerze mówiąc. Spring umożliwia dość prosta integrację z OAuth2, ale problemem jest front w Angularze który również potrzebuje dostęp do zabezpieczonych zasobów. Myślałem jeszcze o takim rozwiązaniu
-Frontend nadal jest odpowiedzialny za uzyskanie authorization code, który wysyła do mojego backendu
-Zamiast zwrócenia z backendu access tokena, zwracam wygenerowany ID klienta i tworzę HashMapę<ID, AccessToken>
-Frontend identyfikuje się wygenerowanym IDkiem, który następnie jest wykorzystany w Springu by znaleźć odpowiedni token

Brzmi to nieco lepiej? Czy nadal nie widzę dużo prostszego rozwiązania?

0

Ok Konkretnie trzymaj zmienna access token w pliku cookie. Tak jest najbezpieczniej!!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1