Inleiding tot JWT: JSON Web Token (JWT) is een open standaard (RFC 7519) die een compacte en zelfvoorzienende manier definieert om informatie veilig tussen partijen in JSON-objecten over te dragen. Deze informatie kan worden geverifieerd en vertrouwd via digitale handtekeningen. JWT's kunnen worden ondertekend met geheimen (met het HMAC-algoritme) of met behulp van RSA's publieke/private sleutelparen.
Enkele scenario's waarin JSON Web Tokens nuttig zijn:
Identiteitsverificatie:Dit is het meest voorkomende geval van het gebruik van JWT's. Zodra de gebruiker is ingelogd, bevat elk volgend verzoek een JWT waarmee de gebruiker toegang krijgt tot de routes, diensten en resources die door dat token zijn toegestaan. Single sign-on is tegenwoordig een functie die veel wordt gebruikt vanwege de lage overhead en het gemakkelijk te gebruiken zijn over verschillende domeinen heen.
Informatie-uitwisseling:JSON Web Tokens zijn een uitstekende manier om informatie veilig tussen partijen over te dragen. Omdat JWT's kunnen worden ondertekend – bijvoorbeeld met publieke/private sleutelparen – is het mogelijk zeker te zijn dat de afzender is wie hij beweert te zijn. Daarnaast, omdat de handtekening wordt berekend met headers en payloads, kun je ook verifiëren dat de inhoud niet is aangepast.
Officiële website:De hyperlink-login is zichtbaar.
Informatie over JWT online parsen:De hyperlink-login is zichtbaar.
Analyseer JWT-parameters online De hyperlink-login is zichtbaar.
Mijn begrip van JWT hieronder is onjuist, geef me alsjeblieft wat advies
Allereerst, dit ding wordt niet aanbevolen om het te gebruiken op de MVC-website, je kunt het gebruiken in een webapi, de positie hiervan is API, niet een sessie van de vervangende website!
asp.net webapi-gebruikstutorial:De hyperlink-login is zichtbaar.Ik ga het wiel niet opnieuw maken, het is prima om te kijken wat er in dit artikel staat.
De samenstelling van JWT
JWT bestaat uit drie delen: Header, Payload en Handtekening, met puntsymbolen ertussen om de vorm xx.yy.zz te vormen.
Let op dat voor ondertekende tokens deze informatie door iedereen kan worden gelezen, ondanks de manipulatiebescherming. Plaats geen gevoelige informatie in de geldige inhoud of headerelementen van de JWT, tenzij deze versleuteld is.
Bijvoorbeeld:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [handtekening] In gewone taal: iedereen kan dit token ontsleutelen, maar de authenticiteit van deze informatie kan niet worden geverifieerd; alleen de server die dit token heeft gegenereerd kan de authenticiteit verifiëren, dus sla er geen gevoelige informatie in.
Er is hier een probleem, namelijk dat als de gebruiker het wachtwoord verandert of de gebruiker niet mag inloggen, hoe kan JWT dan de geldigheid van het token oplossen?
Mijn eigen idee is om een guide-achtige string toe te voegen in het Payload-gedeelte, en dan in de cache te zitten; bij het verifiëren van de identiteit van de gebruiker verifieer je niet alleen de jwt, maar ook de Payload-informatie in de jwt; we kunnen de geldigheid controleren door de cache te controleren.
|