Keycloak -Rôles !!

Bonjour à tous !!

Petit retour "d'expérience" qui pourra sûrement servir à certain.

Dans le cadre d'une petite application, j'utilise Keycloak en tant que SSO. Jusque là rien d'extraordinaire (la suite n'est pas non plus incroyable), mais j'ai passé quelques ... minutes, heures sur un "problème" ...

Je vous expose la situation. Un utilisateur se connecte sur le front (Quasar VueJS) de mon application via Keycloak tout se passe bien et la récupération du token est ok !!

Ensuite, une fois le token obtenu, une requête est envoyée au back (service spring boot en kotlin) afin de récupérer des informations supplémentaires sur cet utilisateur.

Et c'est là, le drame !! En effet, le service est également authentifié auprès de Keycloak en tant que compte de service. Mais je vous laisse voir la réponse ....

Un beau 403 !!

Je me lance alors dans une recherche approfondie dans la config de mon client et les credentials que je lui passe... Je monte de version mon client, je refait, défait rerefait la config X fois ... Je lance mon ordi par la fenêtre... je vais le rechercher car j'ai de la peine pour lui... bref ... je pense que les développeurs qui lisent ceci comprendront parfaitement l'état d'esprit dans lequel je suis à ce moment là...

Je décide alors de laisser le soucis de côté car c'est souvent le mieux à faire et d'y revenir plus tard.

Quelques jours (non quelques heures plus tard car j'ai pas réussi à tenir ça me trotté trop dans la tête) je me relance dans l'aventure mais de manière plus réfléchi.

Je me pose la question toute bête... "Forbiden ..." mais cela viendrait-il des droits ?... Logique vous allez me dire. Et j'en entends déjà dire, mais c'est la base mon petit bonhomme. C'est en effet la base, mais qu'en on est la tête dans le guidon et bien on ne voit pas la solution qui est pourtant sur le bout de son nez. (Et pourtant, j'en ai pas un petit croyez moi!)

Je vais donc dans l'interface de Keycloak et plus précisément dans les rôles du compte de service de mon client. Et là ce fût l'illumination !! Ou plutôt l'ascenseur émotionnel entre "Yes !! J'ai réussi !!" et "Mais quel boulet je suis !! Franchement... avoir perdu autant de temps la dessus !!"

La solution ? Je vous la partage car je pense, comme je l'ai mentionné au début que cela pourra sûrement servir à certain. La voici, il faut veiller à ajouter le rôle "view_user" dans le realm_management de votre client dans la partie "Service account rôles" (ou tout autre rôle dont vous aurez besoin bien entendu).

Et oui, c'est aussi simple que ça !!

Allez en espérant, ne pas retomber dans un périple pareil 😉

NB : Keycloak est en version 14.0.0