Wpis z mikrobloga

Hej. Chcę wykorzystać autoryzacją za pomocą oAuth, grant type: password (tak wiem, że nie zalecane).
Chcę to zrobić na starszej wersji Springa (4), więc nie mam tutaj do czynienia z typowym oauth clientem, managerem itp. i innymi fajnymi rzeczami w spring 5 czy 6.
Działam na obiekcie OAuth2RestTemplate.
I generalnie, token mój ma żywotność 30 minut i jak robię requesty do 30 minut to używa tego samego tokena, ale po 30 minutach, zamiast użyć grant type refresh token (tak, dostaję też z powrotem refresh token jak pytam o access token za 1. razem ), znow uzywa grant type: password :/

Ktoś coś ?
(2 zdjecie w komentarzu, gdzie mam testowty endpoint i za pomocą metody exchange wykorzystuję ten obiekt to zarządzania tokenem)
#java #spring #programowanie
Milo900 - Hej. Chcę wykorzystać autoryzacją za pomocą oAuth, grant type: password (ta...

źródło: image

Pobierz
  • 10
  • Odpowiedz
Proszę napisz w krokach co robisz oraz gdzie się coś wywala, bo trochę ciężko ogarnąć. Przynajmniej mi xD Rozumiem, że dzieje się coś takiego:

1. Uderzasz z tokenem.
2. Requesty działają przez 30 minut
3. Po 30 minutach uderzenie z nowym tokenem powoduje zwrotkę z prośbą o autoryzację hasłem
  • Odpowiedz
  • 0
@milan00700:
Sorki :)
1. Uderzam pod endpoint który wymaga auotryzacji za pomocą oauth , grant type: password.
Mam poprawne: clientid, clientcredentials, scope, login, password, token_uri itp.
2. Przez 30 minut mogę sobie uderzać pod endpoint i używany jest tylko ten access token wygenerowany podczas pierwszego requestu i widzę w logach że leci to grant type: password (za 1. razem)
3. Po 30 minutach jak znów uderzam na request, widzę
  • Odpowiedz
@Milo900 no ale skoro token wygasł po 30 minutach, a wygenerował się przy wbiciu na endpoint za pierwszym razem gdy uderzyłeś z hasłem, to jak miał się wygenerować kolejny token?

Skoro masz ustawioną autoryzację na hasło i limit dla tokena 30 minut to w mojej opinii po tych 30 minutach znowu powinno Cię spytać o hasło żeby wygenerować nowy token
  • Odpowiedz
  • 0
@milan00700:

1. Podczas odwołania do określonego endpointu, system sprawdza ważność zapisanego tokena dostępowego.
2. Jeśli token wygasł, system używa refresh tokena do wygenerowania nowego tokena dostępowego, bez konieczności podawania loginu i hasła.
3. Gdy refresh token także wygaśnie, wymagane jest ponowne użycie danych uwierzytelniających (login i hasło) zgodnie z metodą grant type:password.

Generalnie dlatego grant type:password jest zazwyczaj niewskazany ze względu na konieczność używania wrażliwych danych. Refresh token umożliwia odnawianie tokena
  • Odpowiedz
@Milo900: za dużo oczekujesz, że spring zrobi za ciebie. Złap wyjątek, obsłuż go autoryzując się jeszcze raz, samemu ustawiając refresh token zamiast password. Poza tym jwt możesz odczytać, dekodując z base64. W nagłówku będziesz miał ważność tokenu i nawet nie musisz łapać wyjątku, wystarczy że przed wysłaniem requestu sprawdzisz czy token jeszcze nie wygasł (albo czy nie wygaśnie w ciągu np. 1-10 sek :) ), jak wygasł (lub niedługo wygaśnie) to
  • Odpowiedz