Foto von James Wainscoat auf Unsplash

Multiuser-Multikontenverwaltung mit Keycloak und Mastodon

Die Überschrift ist wohl etwas umständlich gewählt, allerdings trifft es das ganz gut. Im Zuge der Konfiguration der NABU Fediverse Präsenz, NABU.social, war es erforderlich, das sog. Passwort Sharing einzelner Konten zu vermeiden. Da Konten, also einzelne Gliederungen unseres Verbands mit unterschiedlichen aktiven Mitgliedern auf ihre Fediverse NABU.social Präsenz zugreifen müssen.

Das bedeutet konkret:

  1. Die Instanz muss an unseren IDM (NABU Login / Keycloak) angebunden werden.
  2. Eine Gruppe in Keycloak repräsentiert eine Gliederung/Konto
  3. Die Selbstregistrierung ist nicht möglich.
  4. Konten werden automatisiert erstellt.
  5. Nur im NABU Login freigegebene Konten dürfen sich einloggen.

Meet the OIDC_UID_FIELD Flag in Mastodon’s OIDC Config

Dieser Flag sorgt dafür, dass sich ein User, welcher sich einloggt im richtigen Konto landet. Dieses User Attr. wird in Keycloak an eine Gruppe angehängt.

Abb. 1: Attribute in der Keycloak Gruppe vom NABU-Euskirchen

Das OIDC_UID_FIELD wird in unserer Config auf nabu_social_username gesetzt.

Abb. 2: Configflag

Allerdings ist hierfür noch ein Keycloak Mapper erforderlich, so dass dieses Attr. auch im ID Token von OIDC landet.
Dieser Mapper sieht wie fogt aus:

Abb. 3: Keycloak User Attribute Mapper Username

Es gibt zwei weitere Mapper für die E-Mail und den Displaynamen.

Abb. 4: Keycloak User Attribute Mapper Displayname
Abb. 5: Keycloak User Attribute Mapper Email

So weit so gut. Der erste User welcher sich jetzt einloggt, erstellt das Konto. User die sich nach ihm einloggen und Mitglied der Gruppe sind, erhalten Zugriff.

Es besteht jetzt allerdings noch das grundlegende Problem, dass jeder User mit NABU Login Konto sich ein NABU.social Account anlegen können. Hier fehlen dann natürlich die Attr. im ID Token, da der User nicht in der passenden Gruppe ist. Allerdings ist das Mastodon relativ schnuppe. Der legt dann ein Konto mit einem Hash als Usernamen an.

Abb. 6: Hashuseraccounts

Keycloak authentication flows to the rescue!

Abb. 7: Keycloak Loginablaufdiagramm

In Keycloak gibt es die Möglichkeit mittels Authentications Flows den Ablauf eines Login Prozesses genau so bestimmen und zu konfigurieren. Der Login kann also verhindert werden, wenn dem User bspw. eine Client Rolle fehlt. Dieser Flow läßt sich auf einzelne Clients anwenden und sogar als nettes Ablaufdiagramm darstellen.

Abb. 8: Keycloak Elterngruppe mit Client Rolle

In der übergeordneten NABU.Social Gruppe wird unter Rollenzuordnung die client_access Rolle des Mastodon Clients ausgewählt. Dadurch erhält jeder User in dieser Gruppe und den Kindergruppen (also den NABU Gliederungen) diese Rolle mit der Erlaubnis Mastodon zu benutzen.

Es gibt jedoch leider einen kleinen Nachteil an dieser Art Multiuser-Verwaltung. Es ist nicht möglich, dass ein User mehrere NABU.social Konten verwalten kann. Falls hier jemand eine Lösung hat, lasst es mich gerne wissen: https://digitalcourage.social/@ChristophWolff

Foto von James Wainscoat auf Unsplash


Beitrag veröffentlicht

in

von

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert