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:
- Die Instanz muss an unseren IDM (NABU Login / Keycloak) angebunden werden.
- Eine Gruppe in Keycloak repräsentiert eine Gliederung/Konto
- Die Selbstregistrierung ist nicht möglich.
- Konten werden automatisiert erstellt.
- 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.

Das OIDC_UID_FIELD wird in unserer Config auf nabu_social_username gesetzt.

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:

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


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.

Keycloak authentication flows to the rescue!

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.

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
Schreibe einen Kommentar