Le fonctionnement de Keycloak se base sur des jetons JWT.  Or, un jeton JWT n’est pas chiffré. Il est signé numériquement. La signature du jeton garantit son authenticité et son intégrité. Ainsi, unz application qui reçoit une requête HTTP avec un jeton doit impérativement vérifier la signature du jeton avant de s’en servir.

Il y’a deux façons de vérifier la signature d’un jeton JWT Keycloak

Vérification locale  au niveau de l’application

Cette méthode de vérification utilise la clé publique du royaume ainsi l’entête du jeton contenant les informations sur l’algorithme de signature. Avec ces éléments, l’application est en mesure de vérifier elle même la signature de chaque jeton qu’elle reçoit. 

Avantages:

Inconvénients: 

Vérification via le endpoint userinfo

OAuth2 a prévu un endpoint “userinfo” qui prend un jeton JWT et retourne les claims du jeton. Keycloak implémente ce endpoint. Avant de retourner les claims du jeton, Keycloak s’assure de la validité du jeton, et donc vérifie sa signature. Ainsi, l’appel au endpoint “userinfo” de Keycloak permet à une application de vérifier la validité de la signature du jeton.

Avantages: 

Inconvénients: 

Quelle méthode de vérification choisir?

En général, la méthode de vérification locale basée sur la clé publique et l’entête du jeton doit être privilégiée.

La méthode de vérification basée sur l’appel au endpoint userinfo est à envisager uniquement dans le cas d’un besoin particulier qui le justifie.

Leave a Reply