Quand je clique sur / auth / realms / {realm} / protocol / openid-connect / userinfo
, j'obtiens très peu de détails sur l'utilisateur.
{ "sub": "ed291f7a-a799-4d8b-a776-e634d727668c", "email_verified": true, "preferred_username": "admin" }
Plus d'informations (telles que les listes de rôles) se trouvent à l'intérieur du jeton d'accès que j'envoie réellement à ce point de terminaison. Je pourrais simplement décoder le jeton d'accès au lieu d'atteindre ce point de terminaison, est-ce que ce comportement est normal / normal ou est-ce que je fais quelque chose de mal?
3 Réponses :
Les champs présents dans la réponse sont étendus par les revendications présentes dans le jeton d'accès.
Keycloak est compatible OpenID.
Spécification OpenID définit :
Le point de terminaison UserInfo est une ressource protégée OAuth 2.0 qui renvoie Réclamations concernant l'utilisateur final authentifié. Pour obtenir le demandé Réclamations concernant l'utilisateur final, le client fait une demande à UserInfo Endpoint utilisant un jeton d'accès obtenu via OpenID Connect Authentification. Ces revendications sont normalement représentées par un objet JSON qui contient une collection de paires nom et valeur pour les revendications.
Les revendications définies dans la Section 5.1 peuvent être renvoyées , Un scanner Réclamations supplémentaires non spécifiées ici.
J'ai réussi à ajouter des "rôles client" et des "rôles de domaine" à la charge utile Userinfo en procédant comme suit:
il en va de même pour les rôles client, 1. devient Client Scopes> roles Mappers> rôles client
NB : les rôles ne doivent figurer que dans la colonne "Attribués" de l'onglet "Portée"
Pour moi, la solution était de créer un mappeur personnalisé avec un Token Claim Name
personnalisé. realm_access.roles
des mappeurs prédéfinis ne fonctionnait pas fsr
veuillez partager la demande que vous envoyez au point de terminaison
userinfo