Zum Hauptinhalt springen

Authentifizierung

Semaphore bietet drei Möglichkeiten, die Identität einer Person festzustellen. Sie sind voneinander unabhängig und können alle gleichzeitig aktiv sein, sodass der Anmeldebildschirm ein Passwortformular, eine Verzeichnisanmeldung und eine Schaltfläche pro Identitätsanbieter anbieten kann.

MethodeWer prüft das PasswortWann Sie sie einsetzen
Lokale KontenSemaphore, gegen seine eigene DatenbankSie haben kein Verzeichnis oder benötigen einen Notfall-Administrator.
LDAP und Active DirectoryIhr VerzeichnisserverDie Personen existieren bereits in LDAP oder AD und Sie möchten nur einen Satz Zugangsdaten.
OpenID ConnectIhr IdentitätsanbieterSie nutzen Single Sign-on: Keycloak, Okta, Entra ID, Google, GitHub und andere.

Die Authentifizierung beantwortet nur, wer der Benutzer ist. Was er tun darf, wird getrennt davon entschieden – über seine Serverrolle und über seine Rolle in jedem Projekt, siehe Teams.

Wie ein Benutzerdatensatz entsteht

Jede Person, die sich anmeldet, hat einen Datensatz in der Semaphore-Datenbank, unabhängig von der verwendeten Methode. Ein lokales Konto wird von einem Administrator oder mit semaphore user add angelegt. Ein LDAP- oder OIDC-Konto entsteht bei der ersten erfolgreichen Anmeldung, und Semaphore speichert dazu eine externe Identität: die Provider-ID zusammen mit der Benutzer-ID, die dieser Anbieter zurückgegeben hat.

Diese externe Identität ist das, worauf spätere Anmeldungen abgeglichen werden. Das Umbenennen einer Person im Verzeichnis erzeugt daher kein zweites Konto. Sorgfalt erfordert dagegen die erste Anmeldung eines bereits vorhandenen Benutzers, für den noch keine externe Identität existiert. Die Option external_auth_email_matching entscheidet, was dann passiert:

WertVerhalten
auto (Standard)Verknüpfung über die E-Mail-Adresse, aber nur für externe Benutzer, die noch keine Identität haben. Damit werden vor 2.20 angelegte Konten einmalig übernommen, sonst nichts.
alwaysVerknüpfung über die E-Mail-Adresse für jeden externen Benutzer. Nutzen Sie das, wenn sich eine Person über mehrere Anbieter anmeldet.
neverNiemals über die E-Mail-Adresse verknüpfen; Identitäten werden ausschließlich über die Provider-ID abgeglichen.

Lokale Passwortkonten werden in keinem Modus über die E-Mail-Adresse abgeglichen. Ein OIDC-Anbieter, bei dem ein Benutzer seine E-Mail-Adresse selbst wählen kann, ließe sich sonst dazu missbrauchen, das Konto eines Administrators zu übernehmen.

warnung

Die Provider-ID – der Schlüssel in oidc_providers oder ldap_providers – ist Teil jeder gespeicherten Identität. Ein Umbenennen macht die darauf verweisenden Identitäten verwaist, und die betroffenen Benutzer erhalten bei der nächsten Anmeldung neue, leere Konten. Wählen Sie sie einmalig.

Methoden kombinieren

Ein realistisches Setup aktiviert Single Sign-on für die Benutzer und behält einen lokalen Administrator für den Tag, an dem der Identitätsanbieter nicht erreichbar ist:

  1. Konfigurieren Sie den Anbieter und bestätigen Sie, dass sich ein echter Benutzer darüber anmelden kann.
  2. Geben Sie diesem Benutzer die Rollen, die er benötigt.
  3. Behalten Sie ein lokales Administratorkonto mit einem starken Passwort und aktiviertem TOTP.
  4. Setzen Sie password_login_disable, damit alle anderen keine Passwörter mehr verwenden können.

Halten Sie diese Reihenfolge ein. password_login_disable vor Schritt 1 zu setzen funktioniert genau wie angekündigt und sperrt Sie aus Ihrem eigenen Server aus.

In diesem Abschnitt

SeiteInhalt
Lokale KontenPasswörter, TOTP, einmalige Codes per E-Mail, Sitzungsdauer und das Abschalten der Passwortanmeldung.
LDAP und Active DirectoryBind an ein Verzeichnis, Suchfilter, Attributzuordnungen und TLS.
OpenID ConnectAnbieterkonfiguration, Claim-Ausdrücke, IdP-initiierte Anmeldung und zwölf ausgearbeitete Anbieterbeispiele.

Womit Sie beginnen

Eine neue Installation enthält bereits den bei der Einrichtung angelegten lokalen Administrator. Beginnen Sie daher mit Lokalen Konten, um dieses Konto abzusichern, und ergänzen Sie anschließend OpenID Connect oder LDAP für alle anderen.