NYT: få de JWT Håndbog for gratis og lære JWTs i dybden!
Hvad er JSON Webeb Token?
JSON Web Token (JWT) er en åben standard (RFC 7519), der definerer en kompakt og selvstændig måde til sikkert at overføre oplysninger mellem parterne som et JSON objekt. Disse oplysninger kan verificeres og stole på, fordi de er digitalt signeret. J .ts kan underskrives ved hjælp af en hemmelighed (med HMAC-algoritmen) eller et offentligt/privat nøglepar ved hjælp af RSA eller ECDSA.,
selvom J .ts kan krypteres for også at give hemmeligholdelse mellem parterne, vil vi fokusere på underskrevne tokens. Signerede tokens kan verificere integriteten af de krav, der er indeholdt i den, mens krypterede tokens skjuler disse krav fra andre parter. Når tokens underskrives ved hjælp af offentlige / private nøglepar, bekræfter signaturen også, at kun den part, der holder den private nøgle, er den, der underskrev den.
Hvornår skal du bruge JSON Tokeb Tokens?
Her er nogle scenarier, hvor JSON Webeb Tokens er nyttige:
-
autorisation: dette er det mest almindelige scenario for brug af J .t., Når brugeren er logget ind, vil hver efterfølgende anmodning omfatte J .t, så brugeren kan få adgang til ruter, tjenester og ressourcer, der er tilladt med det pågældende token. Single Sign On er en funktion, der i vid udstrækning bruger J .t i dag, på grund af dens lille overhead og dens evne til let at blive brugt på tværs af forskellige domæner.
-
informationsudveksling: JSON Webeb Tokens er en god måde at sikkert overføre information mellem parterne. Fordi J .ts kan underskrives—for eksempel ved hjælp af offentlige/private nøglepar—kan du være sikker på, at afsenderne er den, de siger, de er., Da signaturen beregnes ved hjælp af overskriften og nyttelasten, kan du også kontrollere, at indholdet ikke er blevet manipuleret.
Hvad er JSON Webeb Token struktur?
I sin kompakte form, JSON Web Møntefterligninger, der består af tre dele, adskilt af punktummer (.
), som er:
- Header
- Payload
- Signatur
Derfor, en JWT typisk ser ud som følgende.
xxxxx.yyyyy.zzzzz
lad os nedbryde de forskellige dele.,
Header
header består typisk af to dele: typen af token, som er J .t, og den signeringsalgoritme, der bruges, såsom HMAC SHA256 eller RSA.
For eksempel:
{ "alg": "HS256", "typ": "JWT"}
derefter er denne JSON Base64Url kodet for at danne den første del af J .t.
nyttelast
den anden del af token er nyttelasten, som indeholder kravene. Krav er udsagn om en enhed (typisk brugeren) og yderligere data.Der er tre typer krav: registrerede, offentlige og private krav.,
-
registrerede krav: Dette er et sæt foruddefinerede krav, som ikke er obligatoriske, men anbefales, for at give et sæt nyttige, interoperable krav. Nogle af dem er: iss (udsteder), e .p (udløbstid), sub (emne), aud (publikum) og andre.
Bemærk, at kravnavnene kun er tre tegn, da J .t er beregnet til at være kompakt.
-
offentlige krav: disse kan defineres efter ønske af dem, der bruger J .ts., Men for at undgå kollisioner bør de defineres i Iana JSON Tokeneb Token Registry eller defineres som en URI, der indeholder et kollisionsbestandigt navneområde.
-
Private krav: Dette er de brugerdefinerede krav, der oprettes for at dele information mellem parter, der er enige om at bruge dem og hverken er registrerede eller offentlige krav.
et eksempel på En nyttelast kunne være:
{ "sub": "1234567890", "name": "John Doe", "admin": true}
nyttelasten er så Base64Url kodet til at danne den anden del af JSON Web Token.,
Bemærk, at for underskrevne tokens er disse oplysninger, selvom de er beskyttet mod manipulation, læsbare af nogen. Læg ikke hemmelige oplysninger i nyttelasten eller header elementer af en J .t, medmindre det er krypteret.
signatur
for at oprette signaturdelen skal du tage den kodede overskrift, den kodede nyttelast, en hemmelighed, den algoritme, der er angivet i overskriften, og underskrive den.,
hvis du For eksempel ønsker at bruge HMAC-SHA256 algoritme, den underskrift vil blive skabt på følgende måde:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
signatur bruges til at kontrollere meddelelsen ikke er ændret undervejs, og, i tilfælde af tokens indgået med en privat nøgle, kan det også bekræftet, at afsenderen af JWT er som det siger, det er.
at Sætte alle sammen
output er tre Base64-URL-strenge adskilt af punktummer, der kan være nemt bestået i HTML og HTTP miljøer, mens det er mere kompakt i forhold til XML-baserede standarder, såsom SAML.,
Følgende viser en J .t, der har den tidligere overskrift og nyttelast kodet, og den er underskrevet med en hemmelighed.
Hvis du ønsker at spille med JWT og sætte disse begreber i praksis, kan du bruge jwt.io Debugger til at afkode, skal du kontrollere, og generere JWTs.
Hvordan virker JSON Webeb Tokens?
Ved godkendelse, når brugeren med succes logger ind ved hjælp af deres legitimationsoplysninger, returneres et JSON Webeb-Token. Da tokens er legitimationsoplysninger, skal der udvises stor omhu for at forhindre sikkerhedsproblemer., Generelt bør du ikke holde tokens længere end nødvendigt.
Du bør heller ikke gemme følsomme sessionsdata i Bro .serlagring på grund af manglende sikkerhed.
Når brugeren ønsker at få adgang til en beskyttet rute eller ressource, skal brugeragenten sende J .t, typisk i Autorisationsoverskriften ved hjælp af Bærerskemaet. Indholdet af overskriften skal se ud som følgende:
Authorization: Bearer <token>
dette kan i visse tilfælde være en statsløs autorisationsmekanisme., Serverens beskyttede ruter kontrollerer for en gyldig J .t iAuthorization
header, og hvis den er til stede, får brugeren adgang til beskyttede ressourcer. Hvis J .t indeholder de nødvendige data, kan behovet for at forespørge databasen for visse operationer reduceres, selvom dette måske ikke altid er tilfældet.
Hvis token sendes i Authorization
header, vil Cross-Origin Resource Sharing (CORS) ikke være et problem, da det ikke bruger cookies.,
følgende diagram viser, hvordan en JWT er opnået, og bruges til at få adgang til Api ‘ er eller ressourcer:
- program eller kunden anmoder om tilladelse til godkendelsesserveren. Dette udføres gennem en af de forskellige autorisationsstrømme. For eksempel vil en typisk OpenID Connect-kompatibel webebapplikation gennemgå
/oauth/authorize
endpoint ved hjælp af autorisationskodeflo .et. - når tilladelsen gives, returnerer autorisationsserveren et adgangstoken til applikationen.,
- Programmet bruger adgangstoken til at få adgang til en beskyttet ressource (som en API).
Bemærk, at med underskrevne tokens er alle oplysningerne i token udsat for brugere eller andre parter, selvom de ikke kan ændre det. Det betyder, at du ikke bør lægge hemmelige oplysninger i token.
hvorfor skal vi bruge JSON Tokeb Tokens?
Lad os tale om de fordele af JSON Web-Tokens (JWT), når der sammenlignes med Simpel Web-Tokens (SWT) og Security Assertion Markup Language Tokens (SAML).,
da JSON er mindre verbose end JML, når den er kodet, er dens størrelse også mindre, hvilket gør J .t mere kompakt end SAML. Dette gør J .t til et godt valg, der skal overføres i HTML-og HTTP-miljøer.sikkerhedsmæssigt kan s .t kun symmetrisk underskrives af en delt hemmelighed ved hjælp af HMAC-algoritmen. J andt og SAML-tokens kan dog bruge et offentligt/privat nøglepar i form af et certificate. 509-certifikat til underskrift. Signering af Digitalml med Digitalml Digital Signatur uden at introducere obskure sikkerhedshuller er meget vanskeligt sammenlignet med enkelheden ved at underskrive JSON.,JSON-parsere er almindelige i de fleste programmeringssprog, fordi de kortlægger direkte til objekter. Omvendt har doesnml ikke en naturlig dokument-til-objekt-kortlægning. Dette gør det lettere at arbejde med J .t end SAML påstande.
Med hensyn til brug bruges J .t i Internetskala. Dette fremhæver den lette klientside behandling af JSON Webeb token på flere platforme, især mobil.,
Sammenligning af længden af en kodet JWT og en kodet SAML
Hvis du ønsker at læse mere om JSON Web-Tokens og selv begynde at bruge dem til at udføre godkendelse i dine egne programmer, skal du gå til JSON Web Token landing page på Auth0.
Leave a Reply