Spring Boot 4-microservices en REST-API's · Les

De basis van OAuth2 en JWT

Begrijp de kernconcepten van OAuth2 voor autorisatie en JSON Web Tokens (JWT) voor veilige informatie-uitwisseling.

Les 1 van 312 stappen

De basis van OAuth2 en JWT is een gratis Spring Boot 4-microservices en REST-API's-les op CoddyKit. Dit is les 1 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Boot 4-microservices en REST-API's. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 3 lessen.

Waarom API-beveiliging belangrijk is

Bij het bouwen van toepassingen, vooral toepassingen met REST-API's, is beveiliging van het grootste belang. Je stelt gegevens en functionaliteit beschikbaar die bescherming nodig hebben.

Zonder goede beveiliging kan je API kwetsbaar zijn voor ongeautoriseerde toegang, datalekken of kwaadaardige aanvallen. Deze les legt de basis voor het beveiligen van je services.

AuthN versus AuthZ: belangrijkste verschillen

Laten we eerst twee belangrijke termen verduidelijken:

  • Authenticatie (AuthN): controleren wie een gebruiker of client is. Zie het als het tonen van je identiteitsbewijs om je identiteit te bewijzen.
  • Autorisatie (AuthZ): bepalen wat een geauthenticeerde gebruiker of client mag doen. Dit is vergelijkbaar met een portier die je ticket controleert om te zien of je een bepaald gebied binnen mag.

OAuth2 richt zich voornamelijk op autorisatie.

Maak kennis met OAuth2: de autorisatiestandaard

OAuth2 (Open Authorization 2.0) is een protocol voor autorisatie dat in de sector als standaard geldt. Hiermee kan een toepassing van derden (de 'client') namens een gebruiker (de 'resource owner') beperkte toegang verkrijgen tot een HTTP-service (de 'resource server').

Belangrijk is dat OAuth2 deze toegang mogelijk maakt zonder dat de gebruiker zijn inloggegevens (gebruikersnaam en wachtwoord) rechtstreeks met de clienttoepassing hoeft te delen.

Rollen in OAuth2

OAuth2 definieert vier hoofdrollen die tijdens het autorisatieproces met elkaar communiceren:

  • Resource Owner: de gebruiker die eigenaar is van de beveiligde resources.
  • Client: de toepassing die toegang vraagt tot de beveiligde resources van de resource owner.
  • Authorization Server: de server die de resource owner authenticeert en toegangstokens aan de client verstrekt.
  • Resource Server: de server waarop de beveiligde resources staan en die met toegangstokens aanvragen om beveiligde resources kan accepteren en beantwoorden.

Hoe OAuth2 toegang verleent

OAuth2 gebruikt verschillende 'grant types' (ook wel flows genoemd) om een access token uit te geven. Een access token is een legitimatie die de client toegang geeft tot specifieke resources op de resource server.

De keuze van het grant type hangt af van het type client (bijvoorbeeld webtoepassing, mobiele app of servertoepassing) en de beveiligingsvereisten ervan. De Authorization Code Flow wordt veel gebruikt voor traditionele webtoepassingen.

JWT's geïntroduceerd: beveiligde informatie

Een JSON Web Token (JWT), uitgesproken als 'jot', is een compacte, URL-veilige manier om claims weer te geven die tussen twee partijen worden overgedragen. Deze claims zijn stukjes informatie over een entiteit (meestal de gebruiker) en aanvullende metagegevens.

JWT's worden vaak gebruikt als indeling voor toegangstokens in OAuth2. Ze bieden een zelfstandige manier om informatie over de gebruiker en diens machtigingen veilig te verzenden.

De opbouw van een JWT

Een JWT bestaat uit drie delen, gescheiden door punten (.):

  • Header: bevat metagegevens over het token zelf, zoals het type token (JWT) en het gebruikte ondertekeningsalgoritme (bijvoorbeeld HMAC SHA256 of RSA).
  • Payload: bevat de 'claims': verklaringen over een entiteit (zoals een gebruiker) en aanvullende gegevens. Claims kunnen geregistreerd (gestandaardiseerd), openbaar of privé zijn.
  • Signature: wordt gebruikt om te controleren of de afzender van de JWT is wie deze beweert te zijn en of er niet met het bericht is geknoeid. De handtekening wordt gemaakt met de header, de payload en een geheime sleutel.

JWT-structuur: nader bekeken

Zo kan een typische JWT eruitzien. Elk deel is gecodeerd met Base64Url:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • Het eerste deel is de Header.
  • Het tweede deel is de Payload.
  • Het derde deel is de Signature.

Deze delen worden afzonderlijk gecodeerd en met punten samengevoegd.

JWT-delen decoderen (concept)

De header en payload van een JWT zijn eenvoudigweg als Base64Url gecodeerde JSON. Dat betekent dat iedereen ze gemakkelijk kan decoderen om de inhoud te lezen. De beveiliging komt van de signature, die de integriteit en authenticiteit van het token controleert.

Probeer een voorbeeldtekenreeks in Base64Url te decoderen in Java:

import java.util.Base64;

public class Main {
  public static void main(String[] args) {
    String encodedHeader = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
    String encodedPayload = "eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ";

    System.out.println("Decoded Header:");
    decodeAndPrint(encodedHeader);

    System.out.println("\nDecoded Payload:");
    decodeAndPrint(encodedPayload);
  }

  private static void decodeAndPrint(String encodedString) {
    try {
      byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedString);
      String decodedString = new String(decodedBytes, "UTF-8");
      System.out.println(decodedString);
    } catch (Exception e) {
      System.out.println("Error decoding: " + e.getMessage());
    }
  }
}

Waarom JWT's gebruiken?

JWT's bieden verschillende voordelen, vooral in gedistribueerde systemen zoals microservices:

  • Statelessness: de server hoeft geen sessiegegevens op te slaan. Elke JWT bevat alle benodigde gebruikersgegevens.
  • Schaalbaarheid: omdat tokens zelfstandig zijn, kan elke service ze valideren zonder een centrale sessieopslag, waardoor schalen eenvoudiger wordt.
  • Compact en URL-veilig: ze zijn klein en kunnen eenvoudig worden verzonden in URL-parameters, POST-aanvragen of HTTP-headers.
  • Zelfstandig: ze bevatten alle informatie over de gebruiker, waardoor bij elke aanvraag minder vaak gegevens uit de database hoeven te worden opgezocht.

Controleer je begrip

Welke van de volgende uitspraken beschrijft het hoofddoel van OAuth2 het best?

Samenvatting van de les

In deze les heb je een fundamenteel begrip gekregen van de principes van API-beveiliging. We hebben het verschil vastgesteld tussen Authenticatie (wie je bent) en Autorisatie (wat je mag doen).

Je hebt geleerd over OAuth2 als standaard voor veilige autorisatie, waarmee gecontroleerde toegang tot resources mogelijk wordt. Ook hebben we JSON Web Tokens (JWT's) bekeken en hun structuur en voordelen besproken als compacte, zelfstandige manier om informatie te verzenden. Ze worden vaak gebruikt als toegangstokens binnen OAuth2.

Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
24
Lessen
93

Veelgestelde vragen

Is de les “De basis van OAuth2 en JWT” gratis?

Ja — de volledige tekst van “De basis van OAuth2 en JWT” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Spring Boot 4-microservices en REST-API's wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 3 lessen.

Wat leer ik in “De basis van OAuth2 en JWT”?

Begrijp de kernconcepten van OAuth2 voor autorisatie en JSON Web Tokens (JWT) voor veilige informatie-uitwisseling. Je oefent met Spring Boot 4-microservices en REST-API's door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Spring Boot 4-microservices en REST-API's te beginnen?

Ervaring vooraf is niet nodig. Spring Boot 4-microservices en REST-API's op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 3.

Hoe lang duurt de les “De basis van OAuth2 en JWT”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Spring Boot 4-microservices en REST-API's?

Ja. Elke les over Spring Boot 4-microservices en REST-API's bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. De basis van OAuth2 en JWT
  2. REST-endpoints beveiligen
  3. Op rollen gebaseerd toegangsbeheer
← Terug naar Spring Boot 4-microservices en REST-API's