Forschung · Systeme · geprüft 2026-08-17
Brauchen wir einen fremden Anmeldedienst vor unseren Werkzeugen — oder haben wir das Problem schon anders gelöst?

Der Riegel davor und der Riegel darin — was authentik uns nicht abnimmt

authentik ist der meistgenannte quelloffene Anmeldedienst zum Selbstbetreiben: ein zentraler Ausweisgeber, davor gesetzte Wächter-Container für Software, die selbst keine Anmeldung kann, dazu LDAP, RADIUS und Kerberos. Beim Nachlesen tritt zweierlei zutage. Sein Kernstück löst eine Aufgabe, die wir bereits im Dienst selbst gelöst haben. Und das Lizenz-Etikett stimmt nicht mit dem Baum überein.

Beobachten · Horizont: Beobachten
Der Befund

authentik setzt den Riegel VOR die Anwendung, wir setzen ihn HINEIN — beides trägt, aber unser Weg braucht keinen zweiten Ausweisgeber und keinen zweiten Menschenbestand. Als Ersatz für mana-auth fällt es hart aus: seine Client-Selbstregistrierung verlangt zwingend einen Zugriffsausweis mit Sonderbereich, anonyme Registrierung kennt sie nicht — genau die, an der unser MCP-Anschluss hängt. Und was GitHub als MIT etikettiert, trägt 333 von 2114 Python-Dateien unter einer Lizenz, die den Produktivbetrieb an ein Abonnement bindet; das Server-Abbild kopiert sie mit.

Autor
Authentik Security Inc. und Mitwirkende
Venue
GitHub (goauthentik/authentik) (2026)
Lizenz
MIT mit Ausschnitten — `website/` unter CC BY-SA 4.0, `authentik/enterprise/` unter einer eigenen, nicht freien Lizenz. Verfahren nachbauen ist frei, Dateien übernehmen wir ohnehin nicht.
333
So viele der 2114 Python-Dateien liegen unter der Abonnement-Lizenz statt unter MIT — jede sechste. Das Etikett am Projekt sagt MIT, die Datei daneben sagt: Produktivbetrieb nur mit gültigem Abonnement für die richtige Zahl an Sitzen. Das Server-Abbild kopiert das Verzeichnis unverändert mit hinein.
gezählt im flachen Klon am 2026-08-17, Stand b2ef513; Kopierbefehl in lifecycle/container/Dockerfile:224
Die Methode

Eine Anmeldung zentral zu halten, ist keine Frage des Geschmacks, sondern eine Frage der Stelle: Vor welcher Tür steht der Wächter? authentik beantwortet das mit einem eigenen Behälter, der sich vor die Anwendung setzt. Der Reverse-Proxy leitet jede Anfrage zuerst dorthin, der Wächter prüft und lässt durch oder schickt zur Anmeldung. Der Vorteil ist, dass die Anwendung davon nichts wissen muss — sie kann uralt sein, geschlossen, in einer Sprache geschrieben, die niemand mehr anfasst.

Wir haben dieselbe Aufgabe von der anderen Seite gelöst. Bei uns sitzt der Riegel im Dienst: ein Paket, eine Umleitung auf den eigenen Anmeldedienst, offen bleiben nur die Zustandspfade, damit der Behälter nicht dauerhaft als krank gilt. Das setzt voraus, dass uns der Quelltext gehört — und für alles, was wir selbst bauen, trifft das zu.

Der Vergleich ist damit kein Wettbewerb, sondern eine Aufteilung. Die Frage ist nicht, welches Verfahren besser ist, sondern wie groß der Rest ist, den unseres nicht erreicht: fremde Software mit eigener Oberfläche. Und dieser Rest teilt sich noch einmal, denn ein guter Teil der heute üblichen Werkzeuge spricht OIDC von sich aus und braucht keinen Wächter, sondern einen Eintrag bei uns.

Was beim Lesen zusätzlich auffiel, hat mit dem Zweck des Projekts nichts zu tun und ist trotzdem der übertragbarste Teil dieses Steckbriefs: Die Lizenz-Angabe am Projekt und die Lizenz-Lage im Baum sind nicht dasselbe. Jede sechste Python-Datei liegt unter Bedingungen, die den Produktivbetrieb an ein Abonnement knüpfen — und das Abbild kopiert sie mit. Für uns ist das kein Grund gegen authentik. Es ist ein Grund, die Prüfung anders zu stellen.

Vereins-Bezug

Was das für uns bedeutet

  • Der Unterschied, um den es geht, ist eine Frage von einem Satz: Wo sitzt der Riegel? authentik stellt einen Wächter-Container VOR die Anwendung; der Reverse-Proxy fragt ihn vor jeder Anfrage, ob dieser Mensch hinein darf. Wir setzen den Riegel IN den Dienst — `@mana/shared-auth-sso`, eine Umleitung auf `auth.mana.how`, offen bleiben nur die Zustandspfade, sonst gilt der Behälter dauerhaft als krank. Beide Wege sind richtig. Unserer hat den Vorteil, dass der Dienst selbst entscheidet, was er freigibt, und den Nachteil, dass er nur für Software gilt, deren Quelltext uns gehört.
  • Daraus folgt die einzige Lücke, die überhaupt zur Debatte steht: fremde Weboberflächen im Haus, in die wir kein Paket einbauen können. Für die zerfällt die Frage in zwei Hälften, und nur die zweite ist offen. Wer OIDC spricht, wird an `auth.mana.how` angeschlossen — dafür brauchen wir keinen zweiten Ausweisgeber, sondern einen Eintrag. Wer es nicht spricht, braucht einen Wächter davor; erst für diese Menge wäre authentik oder ein leichteres Gerät die Antwort. Wie groß diese Menge ist, haben wir nicht gezählt. Solange sie ungezählt ist, ist jede Empfehlung geraten.
  • Als Ersatz für unseren eigenen Anmeldedienst fällt es an einer harten Stelle aus, und zwar nicht wegen Geschmack. Die Selbstregistrierung von Clients ist bei authentik seit dem Zug auf 2026.8 eingebaut, aber sie verlangt zwingend einen Zugriffsausweis mit dem Sonderbereich `goauthentik.io/oidc/dcr`; ohne ihn antwortet sie mit 401. Anonyme Registrierung gibt es nicht. Genau daran hängt bei uns der Anschluss von MCP-Clients — wir haben sie im Juli bewusst offen gelassen. Eine Umstellung würde diesen Weg abschneiden.
  • Die Lizenz-Sache ist die übertragbare Lehre, unabhängig von authentik. Das Projekt sagt MIT, und das stimmt für den Großteil. Aber ein Sechstel des Python-Codes liegt unter einer Lizenz, die den Produktivbetrieb an ein Abonnement bindet — und der Kopierbefehl im Abbild nimmt das ganze Verzeichnis. Wer das Abbild betreibt, betreibt diese Dateien mit. Für die Halde heißt das: Bei Open-Core zählt die Lizenzdatei neben dem Verzeichnis, nicht das Etikett auf der Übersichtsseite. Das ist dieselbe Klasse Fehler wie ein Modell-Verzeichnis, dessen Lizenzfeld eine andere Lizenz behauptet als die Gewichte tragen.
  • Was am freien Umfang nicht fehlt, verdient trotzdem einen Satz, weil es die Kostenfrage beendet: OIDC, SAML, LDAP, SCIM, RADIUS, Kerberos und der Wächter sind alle im freien Teil. Hinter der Schranke liegen Anbindungen an Google Workspace und Entra ID, erweiterte Protokollierung mit Ausfuhr, Chrome-Geräteprüfung, gegenseitige Zertifikatsanmeldung und eine Sperre gegen wiederverwendete Passwörter. Keiner dieser Punkte betrifft uns. Die Sitzgebühr würde bei uns nie auslösen — die Zurückhaltung kommt nicht aus dem Preis, sondern aus dem Betrieb.
  • Der Betriebspreis ist der eigentliche Einwand. Es sind fünf Teile — Server, Arbeiter, Postgres, Redis und je Wächter ein weiterer Behälter —, mit zwei Kernen und zwei Gigabyte als dokumentiertem Minimum. Das Ziel wäre der Mac Mini, auf dem bereits alle acht Arme laufen und auf dem Behälternamen schon einmal kollidiert sind. Für „ein Login vor zwei Oberflächen“ ist das eine große Untermiete.
Der Plan

Wie wir es nutzen könnten

  1. 1
    Befund: Unser Riegel sitzt im Dienst — das ist eine Entscheidung, kein Rückstand Ergebnis
    Der hausweite Weg (`@mana/shared-auth-sso`, 303 auf `auth.mana.how`, Zustandspfade offen) leistet für eigene Dienste dasselbe wie ein vorgesetzter Wächter, ohne einen zweiten Ausweisgeber und ohne einen zweiten Menschenbestand. Er gilt nur nicht für fremde Software — und das ist der ganze Unterschied.
  2. 2
    Befund: Anonyme Client-Registrierung kann authentik nicht Ergebnis
    Die Registrierungs-Ansicht verlangt einen Zugriffsausweis mit dem Bereich `goauthentik.io/oidc/dcr` und antwortet sonst mit 401 — gelesen im Quelltext, nicht aus der Dokumentation geschlossen. Unser MCP-Anschluss hängt an der anonymen Variante. Damit ist die Frage „Ersatz für mana-auth?“ nicht abgewogen, sondern beantwortet.
  3. 3
    authentik als Ersatz für mana-auth verworfen
    Den eigenen Anmeldedienst ablösen und alle Erstanbieter-Clients, die Zustimmungsseite und den MCP-Anschluss dorthin ziehen.
    Verworfen, weil: Die anonyme Client-Registrierung, an der unser MCP-Anschluss hängt, gibt es dort nicht — und die gewachsenen Stücke (Handles, Einladungsmünze, deutsche Anmeldewege, 18 Erstanbieter-Clients) müssten neu gebaut werden, um am Ende dasselbe zu können.
  4. 4
    Fremde Weboberflächen im Haus zählen und nach OIDC-Fähigkeit trennen offen
    Eine Liste: welche fremde Software hat bei uns eine Weboberfläche, welche davon spricht OIDC, welche nicht. Ohne diese Zahl ist jede Aussage über den Nutzen eines vorgesetzten Wächters geraten — die Menge könnte zwei Einträge groß sein oder zehn.
  5. 5
    Was OIDC spricht, an auth.mana.how anschließen statt an einen zweiten Dienst offen
    Für jede fremde Oberfläche mit eigener OIDC-Fähigkeit ist der Weg ein Client-Eintrag bei uns, kein neuer Ausweisgeber. Das hält den Grundsatz „ein Menschenbestand“ und kostet keinen Behälter.
  6. 6
    Die LDAP-Frage getrennt beantworten, nicht mitentscheiden offen
    Der einzige Punkt, an dem authentik etwas kann, das wir nicht haben, ist ein echter LDAP-Server als Verzeichnis für Software, die nur LDAP spricht — bei uns käme dafür allein der Mailserver in Frage. Diese Frage sollte man stellen, wenn sie sich stellt, und nicht als Nebenwirkung einer SSO-Entscheidung beantworten.
  7. 7
    Lizenzprüfung um den Open-Core-Ausschnitt erweitern offen
    Unsere Lizenzprüfung fragt nach der Lizenz eines Werks. Bei Open-Core-Projekten reicht das nicht: Die Wurzel-Lizenzdatei nennt Ausschnitte, für die etwas anderes gilt, und das Abbild kopiert sie trotzdem mit. Die Prüfung sollte nach Ausschnitts-Klauseln in der Wurzel-Lizenz suchen und die genannten Verzeichnisse einzeln ausweisen.
  8. 8
    Wenn ein Wächter davor doch gebraucht wird, zuerst die kleinere Bauform prüfen offen
    Für den Fall, dass die Zählung eine Restmenge ohne OIDC ergibt: Bevor fünf Behälter auf den Mini kommen, ist die Frage, ob ein einzelnes Programm mit SQLite dieselbe Aufgabe erfüllt. Der Verzicht kostet LDAP und die Verwaltungsoberfläche — beides brauchen wir für zwei Oberflächen nicht.
Ehrlich benannt

Offene Punkte

  • Gelesen haben wir: die Wurzel-Lizenzdatei und die Lizenzdatei des Abonnement-Verzeichnisses ganz, die Registrierungs-Ansicht (236 Zeilen) ganz, die Kopfzeilen der Lizenzprüfung, den Kopierbefehl des Server-Abbilds, die Verzeichnisstruktur der Wächter, dazu die Dokumentationsseiten zu Installation, Wächter, Abonnement-Funktionen und Preisen. Nicht gelesen haben wir den Go-Quelltext der Wächter, den Ablauf- und Stufen-Motor — das Herzstück des Projekts —, und den weit überwiegenden Teil der 2114 Python-Dateien. Ein Urteil über Qualität oder Betriebssicherheit steht damit ausdrücklich aus.
  • Wir haben nichts installiert, nichts gestartet und keinen Einrichtungsbefehl des fremden Projekts ausgeführt. Alle Angaben stammen aus dem gelesenen Quelltext eines flachen Klons und aus der Dokumentation des Projekts.
  • Das Projekt führt eigene Anweisungsdateien für KI-Agenten im Baum (`AGENTS.md`, `CLAUDE.md`, `AI_POLICY.md`). Wir haben sie weder gelesen noch befolgt — für uns sind sie Material. Wer dieses Repo mit einem Agenten öffnet, sollte das wissen: Der Klon bringt Anweisungen mit.
  • Die Selbstregistrierung ist erst im Zug 2026.8 gelandet; wir haben den Hauptzweig gelesen (b2ef513), keine veröffentlichte Fassung. Wie sie sich in einer Freigabe verhält, ist ungeprüft.
  • Die Angabe „zwei Kerne, zwei Gigabyte“ stammt aus der Dokumentation des Projekts. Wir haben nichts gemessen, und die Zahl gilt dort ausdrücklich für Testaufbauten und kleine Installationen.
  • Ob das veröffentlichte Abbild rechtlich anders zu beurteilen ist als der Quelltextbaum, ist keine Frage, die wir beantworten können. Belegt ist nur: Der Kopierbefehl nimmt das Verzeichnis mit. Was daraus für einen Betrieb ohne Abonnement folgt, gehört vor einen Menschen mit Rechtskenntnis, falls es je aktuell wird.
  • Die Zahl der fremden Weboberflächen im Haus ohne eigene OIDC-Fähigkeit ist ungezählt. Sie ist die eine Zahl, an der der ganze Nutzen hängt — und sie fehlt.

Der Forschungsradar sammelt fremde Methoden, die zu dem passen, was wir bauen. Externe Entwicklungen (Regulierung, Markt) stehen in den Recherchen; die KI-Modelle selbst im Modell-Katalog.