OAuth 2.0: JWT token en claims

Geschreven door: op zondag 30 juni 2019

Leestijd:

In mijn vorige blog heb ik uitgelegd hoe OAuth 2.0 ervoor kan zorgen dat derde partijen op een veilige manier gebruik kunnen maken van jouw applicatie met behulp van tokens. In deze blog gaan we wat meer inzoomen op specifieke functionaliteit van OAuth 2.

Zoals eerder besproken werkt OAuth 2.0 met een toegangstoken. Deze tokens hebben een JSON Web Token (JWT) format. Het JWT token bestaat uit 3 delen gescheiden door drie punten (.). Vaak ziet een token er ongeveer als volgt uit: xxxxx.yyyyy.zzzzz. De drie verschillende delen zijn als volgt:

  1. De header: bestaat vaak uit 2 onderdelen, het type token (vaak JWT) en het versleutel algoritme dat gebruikt is om het token te versleutelen, zoals HMAC SHA256.
     
  2. De payload: bevat informatie over de gebruiker van het token, zoals claims en permissies. Deze zijn voor iedereen inzichtelijk dus let erop dat je hier geen gevoelige informatie inzet. Ook is een JWT token erop gemaakt om kort en compact te zijn dus denk aan de lengte van de namen van de claims die je aan het token toevoegt.
     
  3. De signature: wordt gebruikt om te valideren dat het token vertrouwenswaardig en veilig is.

Het token bevat informatie over de gebruiker en het token zelf. Deze informatie wordt versleuteld met een sleutel welke bij de zender en de ontvanger bekend zijn. Hierdoor kunnen beide partijen nagaan of het token legitiem is.

Bovenstaande delen worden elk  versleuteld door gebruik te maken van Base64Url encodering. Op de deze website kun je een token terugvertalen naar leesbare informatie en kun je precies zien uit welke 3 delen het token bestaat.

Doordat in de payload van het toegangstoken informatie staat over de claims en permissies van de gebruiker, kan de applicatie in het token uitlezen of een gebruiker wel recht heeft om een bepaald HTML endpoint aan te roepen.

Zo bevat een JWT token de volgende gereserveerde claims. Deze claims zijn optioneel:

Code

Naam

Omschrijving

iss

Issuer

Naam van de uitgever van het token

sub

Subject

De gebruiker van het token

aud

Audience

De ontvangers voor wie het token is bedoeld

exp

Expiration time

Geeft aan wanneer de geldigheid van het token verloopt

nbf

Not before time

Voor deze tijd is het toegangstoken niet geldig

iat

Issued at time

De uitgiftedatum van het token

jti

JWT ID

Unieke waarde waarmee het token geïdentificeerd kan worden, wat ervoor zorgt dat het token eenmalig gebruikt kan worden (totdat de geldigheid verstrijkt)

 

De volgende claims zijn te vinden in de header van het token:

Code

Naam

Omschrijving

typ

Type

Het typen token, vaak JWT

cty

Content type

Het wordt aangeraden hier ook JWT in te zetten

alg

Algorithm

Het algoritme gebruikt om het token te versleutelen.

 

Naast deze claims kan je zelf ook eigen claims toevoegen. Hier kun je publieke of privé claims toevoegen.

Publieke claims zijn voor iedereen zichtbaar en bevatten vaak generieke informatie, zoals een naam of e-mailadres. Let hier wel op de naamgeving, welke uniek moet zijn. Je kunt een publieke claim prefixen met bijvoorbeeld de naam van je applicatie.

Privé claims bevatten informatie die alleen geldt voor jouw applicatie, zoals bepaalde rollen voor een gebruiker. Ook hier geldt weer dat de naam uniek moet zijn en geen conflicten moet opleveren met bijvoorbeeld de gereserveerde claims.

Meer lezen over JWT tokens en claims?


Andere blogartikelen

  • SQL: Geclusterde en niet-geclusterde index

    Geschreven door: op zondag 30 juni 2019

    Het kan soms voorkomen dat het veel tijd kost voordat een bepaalde query resultaten teruggeeft. Dit kan liggen aan een scala aan problemen, zoals het gebruik van veel joins. Wat de query kan helpen ve ...

    Bekijk het artikel »
  • Hoe werkt OAuth 2.0

    Geschreven door: op zondag 30 juni 2019

    In de huidige samenleving is iedereen bijna altijd online, zo ook de applicaties waarvan de mensen gebruik maken. Als je jouw applicatie niet goed afschermt, kan dit allemaal veiligheidsrisico’s met z ...

    Bekijk het artikel »
  • Semantisch correcte HTML

    Geschreven door: op vrijdag 28 juni 2019

    Wil je dat je website goed gevonden wordt? Dat alle bezoekers van je website optimaal gebruik ervan kunnen maken? Wil je als ontwikkelaar dat het onderhoud van je website eenvoudiger is? Maak dan gebr ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten