Sicherheit
Mehrere Schichten, keine davon geheim
Ein Identitätsdienst ist der Schlüsselbund einer Organisation. Deshalb liegt hier offen, wie Limen ihn verwahrt – und der Quellcode dazu ebenfalls.
-
Passwörter mit argon2id
Gehasht mit argon2id, dem Verfahren, das die OWASP für neue Anwendungen empfiehlt. Auch wer die Datenbank in die Hände bekommt, kann Passwörter nicht einfach zurückrechnen.
-
Verschlüsselt gespeicherte Geheimnisse
Private Signaturschlüssel und TOTP-Secrets liegen mit AES-256-GCM verschlüsselt in der Datenbank. Der Schlüssel dafür steht in der Umgebungskonfiguration, nicht in der Datenbank.
-
Drosselung bei Fehlversuchen
Die Anmeldung wird pro Kombination aus Herkunftsadresse und Konto gebremst, die Zwei-Faktor-Prüfung zusätzlich kontogebunden. Durchprobieren wird dadurch unattraktiv.
-
Refresh-Token mit Reuse-Detection
Jede Einlösung ersetzt das Token. Wird ein bereits verbrauchtes noch einmal vorgelegt, war es vermutlich gestohlen – die gesamte Token-Kette wird sofort verworfen.
-
Exakter Abgleich der Redirect-URIs
Rückleitungsziele müssen zeichengenau mit einem hinterlegten Eintrag übereinstimmen. Keine Platzhalter, keine Präfix-Regeln – offene Weiterleitungen entstehen so gar nicht erst.
-
Content-Security-Policy mit Nonce
Jede Antwort trägt eine frische Nonce; Skripte ohne passende Nonce führt der Browser nicht aus. Das nimmt eingeschleustem Code die Grundlage.
-
Step-up für sensible Schritte
Wer zweite Faktoren verwaltet, muss sich erneut ausweisen – auch bei bestehender Sitzung. Ein kurz unbeaufsichtigter Rechner reicht nicht aus, um die Absicherung zu entfernen.
-
Verwaltung nur mit zweitem Faktor
Der Verwaltungsbereich verlangt eine MFA-Sitzung. Ein Konto mit Verwaltungsrechten, aber ohne zweiten Faktor, kommt schlicht nicht hinein.
-
Sofortige Sperre bei Deaktivierung
Ein deaktiviertes Konto verliert augenblicklich Anmeldung, Sitzungen und Refresh-Tokens. Es gibt keinen Rest-Zugang, der in einer einzelnen Anwendung übrig bleibt.
Zustimmung
Fremde Anwendungen fragen sichtbar
Eine Anwendung, die nicht als „first party“ registriert ist, bekommt keine Daten, bevor die betroffene Person zugestimmt hat. Was übermittelt wird, steht im Klartext daneben – nicht in einer Fußnote.
- Zustimmung wird pro Anwendung erteilt, nicht pauschal
- Die Liste zeigt genau die Angaben, die der angeforderte Scope umfasst
- Erteilte Zustimmungen lassen sich unter „Mein Konto“ jederzeit widerrufen
- Eigene, als „first party“ eingetragene Anwendungen überspringen den Schritt bewusst
Standards
Prüfbar statt behauptet
Das Discovery-Dokument beschreibt in Maschinenform, was die Instanz unterstützt. Jede Anwendung liest es beim Start – und ihr könnt es genauso aufrufen.
- Signatur
- ID- und Access-Token als JWT, signiert mit RS256. Die öffentlichen Schlüssel stehen im JWKS und lassen sich von jeder Anwendung selbst prüfen.
- Absicherung des Codes
- Nur der Authorization Code Flow, nur mit PKCE und der Methode S256. Implicit Flow und ähnliche Altlasten sind nicht vorgesehen.
- Datensparsamkeit
- Drei Scopes: openid für die Benutzerkennung, profile für Name und Avatar, email für die Adresse. Mehr gibt es nicht zu holen.
{ "issuer": "https://id.beispiel.de", "authorization_endpoint": "https://id.beispiel.de/authorize", "token_endpoint": "https://id.beispiel.de/token", "userinfo_endpoint": "https://id.beispiel.de/userinfo", "jwks_uri": "https://id.beispiel.de/.well-known/jwks.json", "response_types_supported": ["code"], "grant_types_supported": ["authorization_code", "refresh_token"], "id_token_signing_alg_values_supported": ["RS256"], "scopes_supported": ["openid", "profile", "email"], "code_challenge_methods_supported": ["S256"]} Gekürzt. Die vollständige Antwort enthält zusätzlich die Endpunkte für Abmeldung, Widerruf und Introspektion sowie die unterstützten Claims.
Betriebshygiene
Schlüssel wechseln, Handlungen festhalten
Zwei Dinge, die im Alltag gern liegen bleiben – und die Limen deshalb so einfach wie möglich macht.
Rotation ohne Ausfall
Ein Klick erzeugt einen neuen aktiven Schlüssel. Der bisherige bleibt für eine Karenzzeit im JWKS, damit bereits ausgestellte Tokens bis zu ihrem Ablauf prüfbar bleiben. Niemand wird dabei abgemeldet.
Lückenloses Protokoll
Konten anlegen, Passwörter zurücksetzen, Rechte vergeben, Schlüssel rotieren – jede verwaltende Handlung landet im Protokoll, mit Grund, sofern einer angegeben wurde.
Daten
Was Limen über Menschen weiß
Die vollständige Liste. Alles davon liegt in eurer Datenbank, auf eurem Server.
Was gespeichert wird
- Benutzername, Anzeigename und – optional – eine E-Mail-Adresse
- Passwort-Hash, verschlüsseltes TOTP-Secret, registrierte Passkeys
- Profilbild, sofern eines hochgeladen wurde
- Anmeldeversuche und verwaltende Handlungen mit Zeitpunkt und Herkunftsadresse
Was nicht passiert
- Keine Telemetrie und keine Nutzungsstatistik nach außen
- Keine Schriftarten, Skripte oder Bilder von fremden Servern
- Kein Versand von E-Mails, also auch keine Weitergabe an einen Mail-Anbieter
- Keine Auswertung über die Anmeldung hinaus
Ob und wie lange Anmeldeversuche aufbewahrt werden, entscheidet ihr selbst – es ist eure Datenbank. Für die Bewertung nach DSGVO ist die betreibende Organisation verantwortlich; diese Seite ersetzt keine Rechtsberatung.
Vertrauen ist gut, Quellcode ist besser
Alles auf dieser Seite lässt sich nachlesen. Limen steht vollständig unter der AGPL-3.0 – einschließlich der Stellen, an denen Passwörter geprüft und Tokens signiert werden.