access token i refresh token - gdzie są przechowywane oraz jak asp.net je rozpoznaje

0

Cześć,
próbuję dobrze zrozumieć jak działa JWT w ASP. Na zdecydowanej większości tutoriali w controllerze Login zwracany jest np. obiekt tokens, który zawiera w sobie accesstoken oraz refreshtoken.
Pierwsze pytanie jest czy zwracanie tokenów przez metodę Ok jest ok? W sensie, wszyscy piszą, że tokeny powinno się przechowywać w cookie httponly.
Zastanawiam się więc czy ASP.NET sam jakoś rozpoznaje gdzie to ma wylądować i user nie ma do tego dostępu czy to powinno być jednak inaczej przekazywane?

Drugie pytanie dotyczy autentykacji użytkownika. Jak generuję dwa tokeny (access i refresh token) i przekazuję je do usera to czy asp.net jakoś rozpoznaje który jest który? Bo jeśli są podpisane tym samym kluczem (fakt, może być inne) ale jeden token ma długość życia np. 5 minut a drugi 5 dni to skąd ASP wie, który jest który? Czy dwa różne klucze dla access i refresh tokena nie spowodują jakiś wyjątków gdy ASP zacznie weryfikować podpisy?
Z góry dziękuję za pomoc.

1

ja również szukałem odpowiedzi na ten temat ostatnio - generalnie podszedłem w ten sposób gdzie refreshToken jest w Cookie:

https://thecodeblogger.com/2020/12/05/refresh-tokens-using-net-5-web-api-and-net-core-identity/

1
Kofcio napisał(a):

ale jeden token ma długość życia np. 5 minut a drugi 5 dni to skąd ASP wie, który jest który

Nie wie.
Jak już masz JWT (co według mnie rzadko kiedy ma sens jak piszesz typową apkę front + backend tylko dla frontu) to powinieneś wystawić oddzielny endpoint przyjmujący refresh token i zwracający nowy access token. W zwykłych requestach przekazujesz tylko access token, a refresh token używasz do odświeżenia access tokena. Nie wysyłasz ich razem przy każdym zapytaniu.

0

Dziękuję, teraz mi się to troszkę bardziej układa :)

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