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 .
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:
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
- Spring Boot, MySQL: JWT provjera autentičnosti s Spring sigurnošću
- Spring Boot, PostgreSQL: JWT provjera autentičnosti s Spring sigurnošću
- Spring Boot, MongoDB: JWT provjera autentičnosti sa Spring sigurnošću
- Node.js + MySQL: Autentifikacija i autorizacija korisnika s JWT-om
- Node.js + MongoDB: Autentifikacija i autorizacija korisnika s JWT-om
- Node.js + PostgreSQL: Autentifikacija i autorizacija korisnika s JWT-om
Front-end
- Vue.js JWT autentifikacija s Vuexom i Vue Routerom
- Primjer Angular 8 JWT autentifikacije s Web API-jem
- Primjer Angular 10 JWT autentifikacije s Web API-jem
- Primjer Angular 11 JWT autentifikacije s Web API-jem
- Primjer provjere autentičnosti React JWT (bez Reduxa).
- React + Redux: primjer JWT autentifikacije
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:
- Kako se rugati GraphQL API-ima s json-graphql-poslužiteljem
- Hyper V vs VMware VS VirtualBox: Što je najbolje za sastanke s Virtualizat
- Vanjske tablice SQL Server PolyBase s Azure Blob Storage
- Waldo Anticheat: Strojno učenje za otkrivanje ciljanja u videoisječcima
- Izradite decentralizirani protokol razmjene poput PancakeSwap -a na pametnom lancu Binance