Introduksjon til JWT: JSON Web Token (JWT) er en åpen standard (RFC 7519) som definerer en kompakt og selvstendig måte å overføre informasjon sikkert mellom parter i JSON-objekter. Denne informasjonen kan verifiseres og stoles på gjennom digitale signaturer. JWT-er kan signeres ved hjelp av hemmeligheter (ved bruk av HMAC-algoritmen) eller ved bruk av RSAs offentlige/private nøkkelpar.
Noen scenarioer hvor JSON Web Tokens er nyttige:
Identitetsverifisering:Dette er det vanligste tilfellet av bruk av JWT-er. Når brukeren logger inn, vil hver påfølgende forespørsel inneholde en JWT som lar brukeren få tilgang til rutene, tjenestene og ressursene som tokenet tillater. Single sign-on er en funksjon som er mye brukt i dag på grunn av lav overhead og muligheten til å enkelt brukes på tvers av ulike domener.
Informasjonsutveksling:JSON Web Tokens er en flott måte å overføre informasjon sikkert mellom partene på. Fordi JWT-er kan signeres – for eksempel ved bruk av offentlige/private nøkkelpar – er det mulig å være sikker på at avsenderen er den de utgir seg for å være. I tillegg, siden signaturen beregnes ved hjelp av headere og payloads, kan du også verifisere at innholdet ikke er tuklet med.
Offisiell nettside:Innloggingen med hyperkoblingen er synlig.
Parse JWT-informasjon på nett:Innloggingen med hyperkoblingen er synlig.
Analyser JWT-parametere på nett Innloggingen med hyperkoblingen er synlig.
Min forståelse av JWT nedenfor er feil, vær så snill å gi meg noen råd
Først og fremst, denne tingen, det anbefales ikke at du bruker den på MVC-nettsiden, du kan bruke den i webapi, plasseringen av denne tingen er API, ikke en økt på erstatningsnettstedet!
asp.net veiledning for bruk av webapi:Innloggingen med hyperkoblingen er synlig.Jeg kommer ikke til å lage hjulet på nytt, det er greit å se på hva denne artikkelen er skrevet.
Sammensetningen av JWT
JWT består av tre deler: Header, Payload og Signature, med prikksymboler imellom for å danne formen xx.yy.zz.
Merk at for signerte tokens kan denne informasjonen leses av hvem som helst, til tross for manipuleringsbeskyttelse. Ikke plasser sensitiv informasjon i gyldig innhold eller header-elementer i JWT med mindre det er kryptert.
For eksempel:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [signatur] Enkelt sagt kan hvem som helst dekryptere dette tokenet, men ektheten av informasjonen kan ikke verifiseres, kun serveren som genererte tokenet kan verifisere ektheten, så ikke lagre sensitiv informasjon i det.
Det er et problem her, nemlig at hvis brukeren endrer passordet eller brukeren ikke får lov til å logge inn, hvordan kan JWT løse gyldigheten av tokenet?
Min egen idé er å legge til en guide-lignende streng i Payload-seksjonen, og så eksistere i cachen, når man verifiserer brukerens identitet, ikke bare verifisere jwt-en, men også Payload-informasjonen i jwt-en, vi kan kontrollere gyldigheten ved å kontrollere cachen.
|