Zum Inhalt springen
Limen

Quelloffen · Selbst gehostet

Ein Login für alle eure Anwendungen.

Limen ist ein selbst gehosteter Identitätsdienst nach OpenID Connect. Wiki, Cloud und Verwaltungswerkzeuge teilen sich ein Konto, eine Anmeldung und einen Ort, an dem Zugänge vergeben und wieder entzogen werden.

AGPL-3.0 Docker PostgreSQL Keine Cloud-Anbindung

Die Kontoseite einer angemeldeten Person: oben die Navigation zu Konto und Verwaltung, darunter die Karten „Profil“ mit dem unveränderlichen Benutzernamen und „Profilbild“.
RS256
signierte ID- und Access-Tokens
PKCE
Authorization Code Flow mit S256
argon2id
Passwort-Hashing nach OWASP-Empfehlung
AGPL-3.0
quelloffen, kein Lizenzschlüssel

Das Prinzip

Ein Konto statt sieben

Ohne zentralen Dienst führt jede Anwendung ihre eigene Nutzerliste. Neue Personen werden mehrfach angelegt, ausgeschiedene mehrfach vergessen. Limen sitzt einmal davor.

  • Fachschafts-Wiki
  • Fachschafts-Cloud
  • Raumbuchung
  • Wahl-Tool
  • Inventar & Ausleihe
  • Protokoll-Tool

Limen

Ein Konto, eine Anmeldung, ein Ort für Zugänge

Passwort Passkey Zwei-Faktor

Der Ablauf

Was bei einer Anmeldung passiert

Vier Schritte, die eure Anwendungen nicht selbst umsetzen müssen – jede gängige OIDC-Bibliothek beherrscht diesen Ablauf bereits.

  1. 01

    Anwendung aufrufen

    Jemand öffnet das Wiki. Die Anwendung erkennt: hier fehlt eine Anmeldung.

  2. 02

    Weiterleitung zu Limen

    Die Anwendung schickt den Browser an Limen – mit PKCE gesichert, damit der Rückweg nicht abgefangen werden kann.

  3. 03

    Identität prüfen

    Limen fragt Passwort und zweiten Faktor ab – oder erledigt beides in einem Schritt per Passkey.

  4. 04

    Signierte Antwort

    Die Anwendung erhält ein mit RS256 signiertes Token: wer angemeldet ist, seit wann, mit welchen Angaben.

Funktionen

Alles, was ein Identitätsdienst können muss

Und bewusst nichts darüber hinaus. Limen beantwortet die Frage „wer ist das?“ – was jemand darf, entscheidet jede Anwendung selbst.

  • OpenID Connect, wie im Standard

    Authorization Code Flow mit PKCE, Discovery-Dokument und JWKS. Anwendungen binden Limen mit ihrer vorhandenen OIDC-Bibliothek an – ohne Sonderweg.

  • Passkeys und Zwei-Faktor

    Anmeldung per Passwort mit TOTP-Code oder passwortlos per Passkey. Ein user-verifizierter Passkey deckt beide Faktoren in einem Schritt ab.

  • Konten an einer Stelle

    Anlegen, bearbeiten, deaktivieren. Wer geht, verliert den Zugang zu allen angebundenen Anwendungen gleichzeitig – nicht nach und nach.

  • Schlüssel mit Karenzzeit

    Signaturschlüssel lassen sich rotieren, ohne dass bereits ausgestellte Tokens ungültig werden. Der alte Schlüssel bleibt befristet im JWKS.

  • Nachvollziehbares Protokoll

    Wer hat wann welches Konto angelegt, zurückgesetzt oder deaktiviert? Das Audit-Protokoll beantwortet das ohne Nachfragen.

  • Läuft auf eurem Server

    Ein Docker-Container, eine PostgreSQL-Datenbank, nginx davor. Keine Verbindung nach außen, keine Nutzerzahl-Abrechnung.

Für alle im Team

Eine Anmeldung, die niemand erklären muss

Benutzername und Passwort – oder ein Fingerabdruck. Wer einen Passkey hinterlegt hat, meldet sich in einem Schritt an, ohne Passwort und ohne Code aus einer zweiten App.

  • Passkeys über Touch ID, Windows Hello oder Sicherheitsschlüssel
  • TOTP-Codes aus jeder Authenticator-App, plus einmalige Recovery-Codes
  • Sperre nach zu vielen Fehlversuchen – pro Konto und pro Herkunftsadresse
Erster Schritt der Anmeldung: Benutzername, Passwort und darunter die Schaltfläche „Mit Passkey anmelden“.
Zweiter Schritt: Eingabefeld für den sechsstelligen Bestätigungscode aus der Authenticator-App.

Selbstverwaltung

Jede Person sieht, was mit ihrem Konto passiert

Unter „Mein Konto“ lassen sich Profil, Passwort und zweite Faktoren selbst pflegen. Zwei Ansichten dort ersparen der Verwaltung die meisten Rückfragen.

Vier verbundene Anwendungen mit dem Zeitpunkt der letzten Verbindung: Fachschafts-Cloud, Raumbuchung, Fachschafts-Wiki und Protokoll-Tool.

Verbundene Anwendungen

Welche Anwendung darf gerade auf das Konto zugreifen? Ein Klick entzieht die Berechtigung wieder. „Überall abmelden“ beendet in einem Zug alle Sitzungen auf allen Geräten.

Zehn Anmeldeversuche über knapp zwei Wochen, jeder mit Datum, Uhrzeit, Ergebnis und Herkunftsadresse. Zwei fehlgeschlagene Versuche kurz hintereinander stammen von derselben fremden Adresse 203.0.113.201.

Anmeldeaktivität

Erfolgreiche und fehlgeschlagene Versuche mit Zeitpunkt und Herkunftsadresse. Wer einen fremden Versuch bemerkt, sieht es hier zuerst – nicht erst, wenn etwas passiert ist.

Verwaltung

Zugänge vergeben und entziehen – an einer Stelle

Zugang haben ausschließlich Konten mit Administratorrechten – und auch die nur mit aktiver Zwei-Faktor-Sitzung. Wer bloß ein Passwort hat, kommt hier nicht hinein.

Kontenverwaltung in Limen: eine Liste von 16 Konten mit Profilbild, Name, Benutzername und E-Mail sowie Schaltflächen zum Deaktivieren, Zu-Admin-Machen und Bearbeiten.
Sechs registrierte Anwendungen, darunter Fachschafts-Cloud und Wahl-Tool, jeweils mit Client-ID, vollständiger Redirect-URI und Kennzeichnungen wie „first-party“ und „vertraulich“.

Registrierte Anwendungen

Jede Anwendung bekommt eine Client-ID und exakt festgelegte Redirect-URIs. Abweichende Rückleitungen weist Limen ab – ein offener Redirect entsteht so gar nicht erst.

Acht Protokolleinträge über sechs Wochen, darunter „Passwort zurückgesetzt“ mit dem Vermerk „Erstpasswort ausgegeben“ und „Konto deaktiviert“ mit der Begründung „Amtszeit beendet“.

Audit-Protokoll

Jede verwaltende Handlung wird festgehalten: wer, wann, an welchem Konto, von welcher Adresse. Nützlich bei Übergaben – und unverzichtbar, wenn doch einmal etwas zu klären ist.

Datenschutz

Anwendungen bekommen nur, was sie brauchen

Fremde Anwendungen fragen sichtbar um Erlaubnis. Und selbst dann werden nur die Angaben übermittelt, die für den angeforderten Scope vorgesehen sind.

  • Keine stillen Freigaben

    Anwendungen, die nicht als „first party“ eingetragen sind, benötigen eine ausdrückliche Zustimmung. Die Liste der übermittelten Angaben steht im Klartext daneben.

  • Sparsam von Haus aus

    Ohne den Scope „email“ erhält eine Anwendung keine E-Mail-Adresse. Die Adresse ist ohnehin optional – Konten ohne E-Mail funktionieren vollständig.

  • Nichts verlässt euren Server

    Keine Telemetrie, keine externen Schriftarten, keine Abhängigkeit von einem Anbieter. Die Daten liegen in eurer PostgreSQL-Datenbank.

Zustimmungsdialog: „Zugriff erlauben – Fachschafts-Cloud möchte sich mit Ihrem Konto anmelden“, darunter das eigene Profil und die Liste der übermittelten Angaben mit den Schaltflächen „Ablehnen“ und „Zustimmen“.

Betrieb

Ein Container, eine Datenbank, fertig

Compose zieht das fertige Image aus der GitHub Container Registry und startet es zusammen mit PostgreSQL – ein lokaler Build entfällt. Davor gehört nginx, das TLS übernimmt. Beim ersten Start legt Limen die Datenbankstruktur, den ersten Administrator und den Signaturschlüssel selbst an.

Terminal
# 1. Konfiguration anlegen und Geheimnisse erzeugencp .env.example .envopenssl rand -hex 32   # AUTH_SECRETopenssl rand -hex 32   # ENCRYPTION_KEY​# 2. Starten – Compose lädt das fertige Image, kein lokaler Build.#    Migrationen, erster Admin und Signaturschlüssel laufen automatisch.docker compose up -d​# 3. Health prüfencurl -s http://127.0.0.1:3000/api/health# {"status":"ok"}

Häufige Fragen

Ist Limen das Richtige für euch?

Die ehrlichen Antworten – einschließlich der Fälle, in denen ein anderes Werkzeug besser passt.

Für wen ist Limen gedacht?

Für Organisationen, die mehrere eigene Web-Anwendungen betreiben und keine Lust auf getrennte Nutzerlisten haben: Fachschaften und Hochschulgruppen, Vereine, kleine Behörden, Agenturen, Forschungsgruppen. Die Grenze liegt eher bei „wie viele Anwendungen“ als bei „wie viele Personen“.

Was unterscheidet Limen von Keycloak oder Authentik?

Vor allem der Umfang. Limen macht Identität – Konten, Anmeldung, Profil – und sonst nichts. Es gibt keine Realms, keine Mandantenfähigkeit, keine Rollen-Engine. Autorisierung entscheidet jede Anwendung selbst auf Basis der gelieferten Identität. Das macht den Betrieb überschaubar, ist aber die falsche Wahl, wenn ihr Föderation über mehrere Organisationen oder SAML braucht.

Verwaltet Limen auch Rechte und Rollen?

Nein, bewusst nicht. Limen beantwortet die Frage „wer ist das?“ – nicht die Frage „was darf die Person?“. Die zweite Frage hängt vom Zusammenhang ab und wird in der jeweiligen Anwendung besser beantwortet.

Was passiert, wenn jemand die Organisation verlässt?

Das Konto wird in der Verwaltung deaktiviert. Die Anmeldung ist sofort gesperrt, bestehende Sitzungen und Refresh-Tokens verlieren ihre Gültigkeit. Es gibt keine Restzugänge, die in einzelnen Anwendungen übrig bleiben.

Braucht es einen E-Mail-Server?

Nein. Die E-Mail-Adresse ist ein optionales Profilfeld; es gibt keinen Versand von Bestätigungs- oder Zurücksetz-Mails. Passwörter setzt die Verwaltung zurück und gibt ein Erstpasswort aus – das ist bei kleinen Organisationen der ehrlichere Weg als eine Mail-Zustellkette.

Was kostet Limen?

Nichts. Limen steht unter der AGPL-3.0 zur Verfügung: nutzen, anpassen und weitergeben sind erlaubt, solange Änderungen unter derselben Lizenz zugänglich bleiben. Es gibt keinen Lizenzschlüssel und keine Funktionen, die hinter einer Bezahlschranke liegen.

Probiert es auf eurem eigenen Server aus

Quelloffen unter AGPL-3.0, ohne Registrierung und ohne Nutzerzahl-Abrechnung. Wenn es nicht passt, habt ihr eine Stunde investiert – mehr nicht.