Terug

Private Key JWT (client_assertion)

Om te authenticeren tegen het toestemmingsplatform dient er gebruik gemaakt te worden van het OAuth2 principe private_key_jwt

Hierbij wordt op basis van een (bij alleen de aanroeper bekende) private key (RSA of EC) een getekende JWT aangeleverd te worden bij een verzoek voor een token. Dit door middel van het veld: client_assertion. Het toestemmingsplatform zal op basis van de geregistreerde public key(s) in combinatie met het keyID valideren dat deze JWT correct is getekend. Hiermee wordt aangetoond dat de aanroeper ook gemachtigd is.

Voorbeeldcode voor het maken van een client-assertion.

Het toestemmingsplatform kan gebruik maken van RSA en EC keys. Dit kan zowel met PEM keys als keys op basis van JWK. De uitleg hieronder gaat uit van PEM keys.

Het aanmaken van deze PEM keys kan met behulp van het openssl commando.

RSA key

openssl genrsa -out private-key.pem 2048
openssl rsa -in private-key.pem -pubout -out public-key.pem

EC key

openssl ecparam -name prime256v1 -genkey -noout -out private-key.pem
openssl ec -in private-key.pem -pubout -out public-key.pem

De public key PEM die als resultaat van het laatste commando wordt gebruikt is de input voor het toestemmingsplatform. Deze dient op dienst niveau geconfigureerd te worden als public key.

JWT claims

Bij het aanroepen van het token endpoint van het toestemmingsplatform dient het veld client_assertion te worden gevuld met een JWT welke (tenminste) bestaat uit de volgende velden:

Header:

alg

JWA algoritme

Algoritme gebruikt voor het tekenen van de JWT

kid

Key ID

Identifier om aan te geven welke key is gebruikt voor het tekenen van de JWT (en welke public key gebruikt moet worden ter validatie)

Claims:

iss

Issuer

De Client ID die bij het aanmaken van de dienstengroep is getoond

sub

Subject

De Client ID die bij het aanmaken van de dienstengroep is getoond

aud

Audience

De issuer url van het toestemmingsplatform zoals ook is geregistreerd in de OpenID Configuration van het toestemmingsplatform

jti

JWT ID

Uniek ID van het JWT

iat

Issued At

Timestamp welke aangeeft wanner het token is gecreƫerd

exp

Expiration time

Tot wanneer dit JWT geldig is