Detaljan uvod u JWT-JSON web token

Isprobajte Naš Instrument Za Uklanjanje Problema

Izvorni post: https://bezkoder.com/jwt-json-web-token/

Autentifikacija je jedan od najvažnijih dijelova gotovo svih aplikacija, od aplikacije za stolna računala do web aplikacije ili mobilne aplikacije. Ovaj vodič je detaljan uvod u JWT (JSON web token) koji vam pomaže znati:

moja susjeda alice token
  • Autentifikacija temeljena na sesiji u odnosu na autentifikaciju temeljenu na tokenu (zašto je nastao JWT)
  • Kako JWT radi.
  • Kako stvoriti JWT.
  • Kako možemo osigurati našu aplikaciju i potvrditi JWT.

Autentifikacija temeljena na sesiji i autentifikacija temeljena na tokenu

Za korištenje bilo kojeg web-mjesta, mobilne aplikacije ili aplikacije za stolno računalo… Skoro da trebate stvoriti račun, a zatim ga koristiti za prijavu za pristup značajkama aplikacije. To djelovanje nazivamo jest Ovjera .



Dakle, kako autentificirati račun?
Prvo ćemo pogledati jednostavnu metodu koju su popularne web stranice koristile u prošlosti: Autentifikacija temeljena na sesiji .

Zamjenski tekst

Na gornjoj slici, kada se korisnik prijavi na web mjesto, poslužitelj će generirati |_+_| za tog korisnika i pohraniti ga (u memoriju ili bazu podataka). Poslužitelj također vraća |_+_| za Klijent da biste ga spremili u preglednik Kolačić .

Sesija na poslužitelju ima vrijeme isteka. Nakon tog vremena ova je sesija istekla i korisnik se mora ponovno prijaviti kako bi stvorio drugu sesiju.

Ako se korisnik prijavio, a sesija još nije istekla, kolačić (uključujući SessionId) uvijek ide sa svim HTTP zahtjevima na poslužitelj. Poslužitelj će usporediti ovo |_+_| sa pohranjenim |_+_| za provjeru autentičnosti i vraćanje odgovarajućeg odgovora.

U redu je. Ali zašto nam treba Autentifikacija na temelju tokena ?
Odgovor je da nemamo samo web stranicu, postoji mnogo platformi.

Pretpostavimo da imamo web stranicu koja dobro radi sa Sessionom. Jednog dana želimo implementirati sustav za mobilne uređaje (Nativne aplikacije) i koristiti istu bazu podataka s trenutnom web aplikacijom. Što da radimo? Ne možemo autentificirati korisnike koji koriste izvornu aplikaciju koristeći autentifikaciju temeljenu na sesiji jer te vrste nemaju kolačić.

Trebamo li izgraditi još jedan pozadinski projekt koji podržava izvorne aplikacije?
Ili bismo trebali napisati modul autentifikacije za korisnike izvorne aplikacije?

Zato Autentifikacija na temelju tokena rođen je.

Ovom se metodom stanje prijave korisnika kodira u a JSON web token (JWT) od strane poslužitelja i poslati klijentu. Danas ga koriste mnogi RESTful API-ji. Idemo na sljedeći odjeljak, saznat ćemo kako to funkcionira.

Kako JWT radi

Sada pogledajte tijek u nastavku:

Zamjenski tekst

https //www.locast.org/aktiviraj kod

Vidite da je to jednostavno za razumjeti. Umjesto stvaranja a Sjednica , |_+_| generirao |_+_| iz podataka za prijavu korisnika i pošaljite ih na Klijent . Klijent sprema |_+_| i od sada, svaki zahtjev od klijenta treba biti priložen da |_+_| (obično u zaglavlju). Poslužitelj će potvrditi |_+_| i vratiti Odgovor.

Za pohranu JWT-a na strani klijenta, ovisi o platformi koju koristite:

  • Preglednik: Lokalna pohrana
  • IOS: Privjesak za ključeve
  • Android: SharedPreferences

To je pregled a Autentifikacija na temelju tokena teći. Sljedećim odjeljkom ćete to dublje razumjeti.

Kako stvoriti JWT

Prvo, trebali biste znati tri važna dijela JWT-a:

react-native-calendar-picker
  • Zaglavlje
  • nosivost
  • Potpis

Zaglavlje

Zaglavlje odgovara na pitanje: Kako ćemo izračunati JWT?
Sada pogledajte primjer |_+_|, to je JSON objekt poput ovog:

|_+_|

– |_+_| je 'tip', označava da je tip tokena ovdje JWT.
– |_+_| označava 'algoritam' koji je hash algoritam za generiranje tokena |_+_|. U gornjem kodu, |_+_| je HMAC-SHA256 – algoritam koji koristi Tajni ključ .

nosivost

Payload nam pomaže odgovoriti: Što želimo pohraniti u JWT?
Ovo je uzorak korisnog opterećenja:

|_+_|

U JSON objektu iznad pohranjujemo 3 korisnička polja: |_+_|, |_+_|, |_+_|. Možete spremiti bilo koje polje koje želite.

Imamo ih i mi Standardna polja . Oni su izborni.

  • |_+_| (Izdavatelj): tko izdaje JWT
  • |_+_| (Izdano u): vrijeme kada je JWT izdan
  • |_+_| (Vrijeme isteka): vrijeme isteka JWT-a

Više standardnih polja možete vidjeti na:
https://en.wikipedia.org/wiki/JSON_Web_Token#Standard_fields

Potpis

U ovom dijelu koristimo hash algoritam koji sam vam rekao gore.
Pogledajte kod za dobivanje potpisa ispod:

|_+_|

Objasnimo to.
– Prvo, kodiramo Header i Payload, spajamo ih točkom |_+_|

|_+_|

– Zatim ćemo napraviti hash od |_+_| koristeći Hash algoritam (definiran u zaglavlju) s |_+_| niz.
– Konačno, kodiramo rezultat raspršivanja koji treba dobiti Potpis .

Kombinirajte sve stvari

Nakon što imamo zaglavlje, korisni teret i potpis, kombinirat ćemo ih u standardnu ​​JWT strukturu: |_+_|.

Sljedeći kod će ilustrirati kako to radimo.

|_+_|

Kako JWT osigurava naše podatke

JWT NE štiti vaše podatke

JWT uopće ne skriva, zamračuje, osigurava podatke. Možete vidjeti da proces generiranja JWT (Header, Payload, Signature) samo kodira i raspršuje podatke, a ne šifrira podatke.

traka za pretraživanje reagira izvorno

Svrha JWT-a je dokazati da su podaci generirani iz autentičnog izvora.

Dakle, što ako postoji Čovjek-u-sredini napad koji može dobiti JWT, a zatim dekodirati korisničke informacije? Da, to je moguće, stoga uvijek provjerite ima li vaša aplikacija HTTPS enkripciju.

Kako poslužitelj provjerava JWT od klijenta

U prethodnom odjeljku koristimo a Tajna niz za stvaranje Potpis . Ovaj Tajna string je jedinstven za svaku aplikaciju i mora se sigurno pohraniti na strani poslužitelja.

Kada prima JWT od klijenta, poslužitelj dobiva potpis, provjerite je li potpis ispravno raspršen istim algoritmom i tajnim nizom kao gore. Ako odgovara potpisu poslužitelja, JWT je valjan.

Važno!

gdje mogu kupiti špagete

Iskusni programeri i dalje mogu dodavati ili uređivati nosivost informacije prilikom slanja na poslužitelj. Što trebamo učiniti u ovom slučaju?

Token pohranjujemo prije nego što ga pošaljemo Klijentu. Može osigurati da je JWT koji je kasnije poslao Klijent valjan.

Osim toga, spremanje korisničkog tokena na poslužitelju također će biti od koristi Prisilna odjava značajka iz sustava.

Zaključak

Nikada neće postojati najbolja metoda za autentifikaciju. Ovisi o slučaju upotrebe i načinu na koji želite implementirati.

Međutim, za aplikaciju koju želite prilagoditi velikom broju korisnika na mnogim platformama, JWT autentifikacija je poželjna jer će token biti pohranjen na strani klijenta.

Sretno učenje, vidimo se opet!

Daljnje čitanje

Pozadina

Front-end

Arhitektura

bezkoder.com

Detaljan uvod u JWT-JSON web token

Autentikacija temeljena na sesiji u odnosu na autentifikaciju temeljenu na tokenu, kako JWT funkcionira, kako stvoriti JWT, kako možemo zaštititi svoju aplikaciju i potvrditi JWT.>

Vidi Također: