Keycloak: Beliebiges User-Attribut im JWT ausgeben

In diesem Beitrag beschreibe ich, wie man in Keycloak ein beliebiges Attribut einem User hinzufรผgt und dieses dann in das JWT (JSON Web Token) ausgibt. Dies kann nรผtzlich sein, um im Rahmen der Software-Entwicklung Daten zu fingieren oder um durch zusรคtzliche, manuell gesetzte Attribute den Funktionsumfang der eigenen Software aufzubohren.

Um in Keycloak einem User ein beliebiges Attribut zu ergรคnzen, sucht man zunรคchst den betreffenden User im Bereich Users. Hat man den entsprechenden User aufgerufen, wechselt man auf den Reiter Attributes. Ggf. werden hier bereits automatisch ergรคnzte Attribute angezeigt. Um ein beliebiges, statisches Attribut zu ergรคnzen, klickt man auf Add an attribute und fรผllt die Felder Key und Value und klickt anschlieรŸend aus Save.

In Keycloak einem User ein beliebiges Attribut hinzufรผgen
In Keycloak einem User ein beliebiges Attribut hinzufรผgen

Ein beispielhafter Eintrag kรถnnte wie folgt aussehen:

KeyValue
cityCologne

Dieses manuell ergรคnzte Attribut am User kann nachtrรคglich noch beliebig verรคndert werden. Bedenke aber bitte, dass es beim Wert des Keys auf die exakte GroรŸ- und Kleinschreibung ankommt, damit dieses Attribut spรคter genutzt werden kann (also nicht city mit City verwechseln ;)).

User-Attribut an JWT รผbergeben

Nun, da das User-Attribut ergรคnzt ist, mรผssen wir definieren, dass das zusรคtzliche Attribut auch im JWT ausgegeben wird. Ohne diesen Schritt ist das Attribut zwar generell definiert, wird aber nicht weitergereicht!

Hierfรผr wechseln wir zu Client scopes (Pfeil 1) und klicken in der Auflistung auf profile. Dort wechseln wir dann auf den Reiter Mappers (Pfeil 3).

In Keycloak User-Attribut an den JWT durchreichen
In Keycloak User-Attribut an den JWT durchreichen

Als nรคchstes musst du auf dem Button Add mapper aus dem Dropdown By configuration auswรคhlen (Pfeil 4).

Nun รถffnet sich ein neuer Dialog, in welchem dir verschiedene „mappings“ zur Auswahl angeboten werden. Um ein beliebiges User-Attribut im JWT auszugeben, wรคhlst du User Attribute.

In Keycloak User-Attribut an den JWT durchreichen

Im Anschluss hieran รถffnet sich ein weitere Dialog, in welchem du nun noch die Angaben zu dem im ersten Schritt von dir definierten, individuellen User-Attribut machen musst. Beachte bitte unbedingt, dass es auf die exakte GroรŸ- und Kleinschreibung ankommt. Ein city entspricht in diesem Kontext nicht einem City!

Ich versuche im Kontext solcher „durchgereichten Informationen“ in Keycloak, wenn mรถglich, einheitliche Namen zu nutzen, um nicht durch sonst deutlich leichtere Fehler in einem solchen Mapper unnรถtig auf Fehlersuche gehen zu mรผssen. Fรผr den folgenden Screenshot und das Beispiel „city“ wรผrde dies bedeuten:

Name*city
User Attributecity
Token Claim Namecity

Alle Angaben sind also sowohl einheitlich klein geschrieben, als auch wรถrtlich identisch, sofern mรถglich!

Mapper in Keycloak fรผr individuelle User-Attribute
Mapper in Keycloak fรผr individuelle User-Attribute

In dem von mir beschriebenen Beispiel, musst du keine Einstellungen verรคndern, sondern kannst die Default-Werte รผbernehmen.

Als Ergebnis solltest du nun das User-Attribut city im JWT nach erfolgreichem Login mitgegeben bekommen (also key: city und value: Cologne)!

Schreibe einen Kommentar