DPoP (Demonstrating Proof-of-Possession)
Krijg inzicht in DPoP, een mechanisme dat access tokens cryptografisch aan de client koppelt, de tokenbeveiliging verbetert en tokenexfiltratie voorkomt.
DPoP (Demonstrating Proof-of-Possession) is een gratis OAuth2 en OpenID Connect diepgaand bekeken-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject OAuth2 en OpenID Connect diepgaand bekeken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus OAuth2 en OpenID Connect diepgaand bekeken bevat in totaal 4 lessen.
Wat is DPoP?
Welkom! Vandaag bekijken we DPoP, wat staat voor Demonstrating Proof-of-Possession. Het is een belangrijke beveiligingsverbetering voor OAuth2 en OpenID Connect.
DPoP helpt een groot beveiligingsrisico te voorkomen: gestolen toegangstokens. Het zorgt ervoor dat alleen de legitieme client (de app) een toegangstoken kan gebruiken.
Het probleem van tokendiefstal
Stel je voor dat een aanvaller een toegangstoken steelt. Zonder DPoP kan die aanvaller dit token gebruiken om toegang te krijgen tot je beveiligde bronnen en zich voor te doen als de legitieme client.
Deze 'tokenexfiltratie' is een aanzienlijk beveiligingsprobleem. Standaard bearer-tokens voorkomen dit niet automatisch, omdat iedereen die het token 'draagt' (bezit), het kan gebruiken.
Hoe DPoP dit oplost
DPoP koppelt een toegangstoken cryptografisch aan de privésleutel van een specifieke client. Je kunt dit zien als een digitale handtekening die alleen de rechtmatige client kan maken.
Dit is het kernidee:
- De client genereert een uniek sleutelpaar.
- De openbare sleutel wordt aan het toegangstoken gekoppeld.
- De client 'bewijst het bezit' van de privésleutel bij elk verzoek.
Het geheime sleutelpaar van de client
Het proces begint met de clientapplicatie, die een asymmetrisch cryptografisch sleutelpaar genereert. Dit betekent dat de client zowel een privésleutel als een openbare sleutel maakt.
- De privésleutel wordt geheimgehouden door de client.
- De openbare sleutel kan worden gedeeld zonder de beveiliging in gevaar te brengen.
Dit sleutelpaar is uniek voor de clientsessie of het clientexemplaar.
Een DPoP-token aanvragen
Wanneer de client een toegangstoken aanvraagt bij de autorisatieserver, voegt de client een speciale header met de naam DPoP toe aan het verzoek.
Deze DPoP-header bevat een JSON Web Token (JWT) dat is ondertekend met de privésleutel van de client. Dit JWT bevat een hash van de openbare sleutel van de client.
De DPoP-JWT en de claim jkt
Het JWT in de DPoP-header is het 'bewijs van bezit'. Het bevat verschillende claims:
jkt: de JSON Web Key Thumbprint van de openbare sleutel van de client.htm: de HTTP-methode van het verzoek (bijvoorbeeld GET of POST).htu: de HTTP-URL van het verzoek.iat: het tijdstip van uitgifte, waarmee herhaling wordt voorkomen.
De autorisatieserver valideert dit JWT en koppelt de jkt aan het uitgegeven toegangstoken.
Een aan DPoP gekoppeld token gebruiken
Zodra de client een aan DPoP gekoppeld toegangstoken ontvangt, gebruikt de client dit om toegang te krijgen tot beveiligde bronnen op de resourceserver.
Bij elk verzoek aan de resourceserver moet de client opnieuw een nieuwe DPoP-header meesturen met een vers JWT. Dit JWT is ondertekend met de privésleutel van de client en komt overeen met de htm en htu van het huidige verzoek.
Validatie door de resourceserver
De resourceserver voert kritieke controles uit:
- De server verifieert de handtekening van het DPoP-JWT met de openbare sleutel die is afgeleid van de claim
jkt. - De server controleert of de
jktin het DPoP-JWT overeenkomt met dejktdie in het toegangstoken zelf is opgeslagen. - De server controleert of de claims
htmenhtuin het DPoP-JWT overeenkomen met het werkelijke HTTP-verzoek.
Als een controle mislukt, wordt de toegang geweigerd. Zo kan alleen de client die over de privésleutel beschikt het token gebruiken.
DPoP versus Mutual TLS (mTLS)
Je vraagt je misschien af hoe Mutual TLS (mTLS) hierin past. Zowel DPoP als mTLS koppelt tokens aan een client, maar ze werken op verschillende lagen:
- mTLS: koppelt op de TLS- (transport)laag met clientcertificaten.
- DPoP: koppelt op de applicatielaag met cryptografische bewijzen in HTTP-headers.
DPoP is vaak flexibeler en eenvoudiger te implementeren voor een groter aantal clienttypen (vooral openbare clients zoals mobiele apps) dan mTLS.
Test je kennis van DPoP
Welke van de volgende opties zijn belangrijke voordelen van het gebruik van DPoP in OAuth2/OIDC-implementaties?
DPoP: een sterkere koppeling
Gefeliciteerd! Je hebt geleerd over DPoP, een krachtig beveiligingsmechanisme.
DPoP verbetert OAuth2 en OIDC door toegangstokens cryptografisch aan de privésleutel van de client te koppelen. Hierdoor wordt tokenexfiltratie effectief voorkomen en kunnen aanvallers gestolen tokens niet gebruiken.
Dit 'bewijs van bezit' versterkt de beveiliging van je applicaties aanzienlijk, omdat alleen de legitieme client zijn toegangstokens kan gebruiken.
Leer OAuth2 en OpenID Connect diepgaand bekeken 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
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “DPoP (Demonstrating Proof-of-Possession)” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad OAuth2 en OpenID Connect diepgaand bekeken, waaronder “DPoP (Demonstrating Proof-of-Possession)”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus OAuth2 en OpenID Connect diepgaand bekeken bevat in totaal 4 lessen.
Wat leer ik in “DPoP (Demonstrating Proof-of-Possession)”?
Krijg inzicht in DPoP, een mechanisme dat access tokens cryptografisch aan de client koppelt, de tokenbeveiliging verbetert en tokenexfiltratie voorkomt. Je oefent met OAuth2 en OpenID Connect diepgaand bekeken 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 OAuth2 en OpenID Connect diepgaand bekeken te beginnen?
Ervaring vooraf is niet nodig. OAuth2 en OpenID Connect diepgaand bekeken 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 2 van 4.
Hoe lang duurt de les “DPoP (Demonstrating Proof-of-Possession)”?
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 OAuth2 en OpenID Connect diepgaand bekeken?
Ja. Elke les over OAuth2 en OpenID Connect diepgaand bekeken 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
- FAPI en Financial-grade API's
- DPoP (Demonstrating Proof-of-Possession)
- Continuous Access Evaluation Protocol (CAEP)
- Pushed Authorization Requests (PAR)