Czy jest bezpiecznie udostępniać API refreshtoken

0

Pytanie

Mam aplikacja opracowana z wykorzystaniem React w interfejsie i ASP.Net Web API w бэкэнде. Używam JWT do autoryzacji. Proces polega na

  1. Gdy użytkownik loguje się do systemu i uwierzytelniony, na interfejs wysyłane są 2 wejścia: token dostępu i token aktualizacji. Token dostępu to JWT, a token pack-jest to losowy ciąg znaków i token aktualizacji są przechowywane w bazie danych.
  2. Dla każdego kolejnego połączenia token dostępu API, założonego w tytule, mam filtr uwierzytelniania, który sprawdza token dostępu.
  3. Jak tylko termin ważności tokenu dostępu skończy, pojawi się status 401 z komunikatem o błędzie TokenExpired.
  4. Jak tylko interfejs otrzyma 401, on spowoduje, że API token aktualizacji, aby uzyskać token aktualizacji

Pytanie, które mam, polega na tym, że u mnie nie może być filtr uwierzytelniania w celu weryfikacji tokena dostępu API tokenów aktualizacji, tak jak on wyda 401 z powodu token dostępu, które wygasły, więc muszę zrobić API token aktualizacji anonimowy, aby nie dostał się w filtr uwierzytelniania. Jeśli robię anonim, dzwonię do bazy danych, aby uzyskać uchwyt aktualizacji, zapisany dla użytkownika, i porównać go z tym, który dostałem od zewnętrznego interfejsu. Więc, czy można bezpiecznie zrobić API tokenów aktualizacji anonimowy, jeśli nie, to jaki jest najlepszy sposób?

asp.net-web-api c# jwt
2021-11-24 05:13:45
2
0

W Auth0 stworzony zestaw funkcji, które zmniejszają ryzyko związane z użyciem tokenów aktualizacji, poprzez wprowadzenie gwarancji i kontroli ich cyklem życia. Nasza platforma identyfikacji oferuje naturalnym tokenów aktualizacji, która zawiera także automatyczne wykrywanie ponownego użycia.

Proszę przeczytać poniższy temat.

Aktualizacja Rotacji Tokenów

Automatyczne Wykrywanie Ponownego użycia Znacznika Aktualizacji

2021-11-24 05:56:21

Wykonujemy swego rodzaju naturalnym tokenów aktualizacji. Gdy wymagane nowy token dostępu, możemy sprawdzić go za pomocą tokenu aktualizacji i oferujemy nowy token dostępu i nowy token aktualizacji, i token aktualizacji aktualizowane w bazie danych. Jednak nie sądzę, że możemy zapisać listę wszystkich tokenów aktualizacji wygenerowanych do tej pory, jak określono w sekcji automatyczne wykrywanie ponownego użycia
Raghul Raman
0

JWT jest podpisany za pomocą wstępnie zdefiniowanego klucza prywatnego. Ponieważ to REST API w бэкэнде i bez stanu, jwt używany do autoryzacji i budowy obiektu podstawowego

Jak mówisz, token dostępu stanowi autoryzacji w aplikacji, jeśli znacznik aktualizacji otwarty, to znacznik aktualizacji może być reprezentowana przez osobę nieupoważnioną, aby uzyskać token dostępu, które mogą wykorzystać do tej samej autoryzacji.

Korzystanie z "wcześniejszej tajemnicy" wskazuje, że JWT jest rozwiązaniem JWT tylko dla HMAC, Czyli Szyfrowania nie, ponieważ oznacza to, że na kilka zamkniętych i otwartych kluczy, a nie na "podgląd sekret". W ten sposób, JWT, w rzeczywistości, jest podpisem do opisu cech bezpieczeństwa, zapewniamy integralność, aby wymagania JWT były jasno sformułowane i nie zostały zmienione od momentu podpisania. Oznacza to również, że dla podpisu na jednym końcu jest taki sam tajemnicą, że i do sprawdzenia na drugim końcu, musi wykorzystywać ten sam sekret, ponieważ do sprawdzenia podpisu wymagane jest, aby obie strony wygenerowana podpis i obie podpisu pasowały. W ten sposób, żadne dane nie są szyfrowane, więc dane w JWT nie są poufne i potrzebują ochrony.

Biorąc pod uwagę ten kontekst, jak token aktualizacji, jak i token dostępu są proste JWT, który może być wygenerowany tylko właścicielem tajemnicy - jeśli są ujawnione, można ich używać do wykonywania szkodliwych wniosków, dopóki pozostają one ważne (nbf reklamacja).

W rzeczywistości, ten typ JWT może być stosowany prawidłowo, jeśli będzie on wydany za osobowość, którą jest tajemnica, podpisany przez JWT, bez rzeczywistej znajomości samego sekretu, aż nbf zatwierdzenie upływa termin ważności tokenu - i token aktualizacji jest mechanizmem do odnowienia nbf twierdzi, nie mając wydzieliny (co doprowadzi do nowego podpisu, bo nbf zatwierdzenie zmieni jeśli używasz).

Istnieje jedna ochrona od ponownego użycia tokenu dostępu, to stwierdzenie nonce. Jeśli obecnie nie używasz zatwierdzenie nonce, można przeczytać o tym, jak realizowane OIDC, i zrobić to samo w swojej aplikacji. Ale, jak powiedział pan, że aplikacja nie ma stanu, ale mam nadzieję, że u zaplecza jest forma stanu, który gwarantuje brak ponownego użycia i zapobiega ponownego użycia podpisu JWT. Do każdego jednorazowego zmiany podpisu JWT, dlatego, token dostępu zmienia się i może być używana tylko 1 raz. Tak więc w przypadku kradzieży jest to warunek wyścig, kto pierwszy wykorzystuje token, co znacznie minimalizuje ryzyko, ale nie jest idealnym rozwiązaniem.

2021-11-24 09:11:17

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................