Wprowadzenie do JWT: JSON Web Token (JWT) to otwarty standard (RFC 7519), który definiuje zwarty i samodzielny sposób bezpiecznego przesyłania informacji między stronami w obiektach JSON. Informacje te można zweryfikować i zaufać za pomocą podpisów cyfrowych. JWT mogą być podpisywane za pomocą sekretów (algorytmu HMAC) lub za pomocą par klucza publicznego/prywatnego RSA.
Kilka scenariuszy, w których JSON Web Tokens są przydatne:
Weryfikacja tożsamości:To najczęstszy przypadek stosowania JWT. Po zalogowaniu się użytkownik każde kolejne żądanie zawiera JWT, który pozwala użytkownikowi uzyskać dostęp do tras, usług i zasobów dozwolonych przez ten token. Single log-on to funkcja szeroko stosowana dziś ze względu na niskie koszty pracy i łatwe korzystanie w różnych dziedzinach.
Wymiana informacji:Tokeny internetowe JSON to świetny sposób na bezpieczne przesyłanie informacji między stronami. Ponieważ JWT mogą być podpisane – na przykład przy użyciu par klucza publicznego/prywatnego, można mieć pewność, że nadawca jest tym, za kogo się podaje. Dodatkowo, ponieważ sygnatura jest obliczana za pomocą nagłówków i ładunków, możesz również sprawdzić, czy treść nie została zmieniona.
Oficjalna strona internetowa:Logowanie do linku jest widoczne.
Analizuj informacje JWT online:Logowanie do linku jest widoczne.
Analizuj parametry JWT online Logowanie do linku jest widoczne.
Moje rozumienie JWT poniżej jest błędne, proszę o radę
Przede wszystkim, nie zaleca się używania tego urządzenia na stronie MVC, możesz używać jej na Webapi, a lokalizacja tego urządzenia to API, a nie sesja na stronie zastępczej!
asp.net tutorialu korzystania z webAPI:Logowanie do linku jest widoczne.Nie będę przerabiał koła, patrząc na to, co jest napisane w tym artykule, jest w porządku.
Skład JWT
JWT składa się z trzech części: Nagłówka, Ładunku i Sygnatury, z symbolami kropek pomiędzy nimi, tworząc formę xx.yy.zz.
Należy zauważyć, że w przypadku podpisanych tokenów te informacje mogą być odczytane przez każdego, mimo ochrony przed manipulacją. Nie umieszczaj wrażliwych informacji w ważnych elementach treści lub nagłówków JWT, chyba że są one szyfrowane.
Na przykład:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [podpis] Mówiąc prosto, każdy może odszyfrować ten token, ale autentyczność tych informacji nie może być zweryfikowana, jedynie serwer, który go wygenerował, może zweryfikować autentyczność, więc nie przechowuj w nim wrażliwych informacji.
Jest tu problem, a mianowicie, jeśli użytkownik zmieni hasło lub nie może się zalogować, jak JWT może rozwiązać ważność tokena?
Mój własny pomysł to dodanie łańcucha podobnego do guidu w sekcji Payload, a następnie istnienie w pamięci podręcznej, podczas weryfikacji tożsamości użytkownika, nie tylko weryfikacji jwt, ale także informacji o ładunku w jwt, możemy kontrolować jego ważność poprzez kontrolę pamięci podręcznej.
|