9 votes

Keycloak : mappage du nom d'utilisateur sur la revendication du sujet

J'ai besoin de configurer Keycloak pour qu'il crée un JWT avec le claim "sub" rempli avec le nom d'utilisateur, au lieu de l'userId par défaut dans sub.

Cela signifie qu'au lieu de ce jeton :

{
    "jti": "b1384883-9b59-4788-b09f-98b40b7e3c3b",
   ...
    "sub": "fbdb4e4a-6e93-4b08-a1e7-0b7bd08520a6",
    "preferred_username": "m123456"
}

J'ai besoin de recevoir :

 {
    "jti": "b1384883-9b59-4788-b09f-98b40b7e3c3b",
    ...
    "sub": "m123456",
    "preferred_username": "m123456"
 }

Pourriez-vous me suggérer comment faire ?

J'ai essayé le mappeur de nom d'utilisateur, mais il ajoute une deuxième revendication "sub" et avec le jwt n'est pas valide.

13voto

Shuky Points 31

Ou de cette façon : avec le type User Property Mapper.

mise en correspondance de la propriété de l'utilisateur avec la demande

    {
      "id": "5d45fe41-83c6-4457-807b-5240ff7c09b9",
      "name": "UsernameInSubject",
      "protocol": "openid-connect",
      "protocolMapper": "oidc-usermodel-property-mapper",
      "consentRequired": false,
      "config": {
        "userinfo.token.claim": "true",
        "user.attribute": "username",
        "id.token.claim": "true",
        "access.token.claim": "true",
        "claim.name": "sub",
        "jsonType.label": "String"
      }

7voto

Nicola Ben Points 3974

Je l'ai résolu de cette façon.

1) Dans la section de configuration "Clients", choisissez votre client.

2) Allez dans l'onglet "Mappers" et créez un nouveau "Mapper script".

3) Une section éditable appelée "script" s'ouvrira et à l'intérieur de celle-ci vous pourrez éditer la ligne suivante : token.setSubject(user.getUsername());

4) Maintenant, mon jeton contient "sub": "user123456"

5) Regardez cette image

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X