# Sicherheit

> Was Konten und Daten in nexxus schützt. Passwortregeln, Zwei-Faktor-Authentifizierung mit Backup-Codes, gemerkte Browser, Zwei-Faktor-Pflicht je Rolle, Sitzungen, der Anmelde-Link, Begrenzungen, persönliche API-Tokens, das Anmeldeprotokoll, das Änderungsprotokoll und die Mandantentrennung.

In nexxus liegen Ihre Kunden, Verträge und Stundennachweise, und der KI-Assistent kann damit arbeiten. Deshalb kommt es darauf an, wer sich anmeldet. Diese Seite beschreibt jeden Schutz rund um die Anmeldung und um Ihre Daten, die zugehörigen Einstellungen und was jede Person in ihrem eigenen Profil selbst tun kann.

Die Administratorin von Brandt & Söhne hat am ersten Tag zwei Entscheidungen getroffen. Jeder Administrator muss eine Authenticator-App benutzen, ebenso die beiden Teamleitungen, die Urlaub freigeben und Projektsätze sehen. Alle anderen dürfen wählen. Vier Wochen später wird der Laptop der Buchhalterin aus ihrem Auto gestohlen. Sie meldet den Laptop vom Telefon aus in ihrem Profil ab, die Administratorin setzt ihre Authenticator-App zurück, und das Änderungsprotokoll zeigt, dass seit dem Diebstahl unter ihrem Konto nichts geändert wurde.

## Wie eine Anmeldung geschützt ist

<Flow
  steps={[
    { icon: 'key-round', title: 'Passwort', text: 'Mindestens 12 Zeichen, gegen bekannte Datenlecks geprüft.' },
    { icon: 'smartphone', title: 'Zweiter Faktor', text: 'Ein Code aus der Authenticator-App, ein Backup-Code oder ein gemerkter Browser.', tone: 'cyan' },
    { icon: 'cookie', title: 'Sitzung', text: '12 Stunden ohne Aktivität, oder 30 Tage mit Angemeldet bleiben.', tone: 'lavender' },
    { icon: 'history', title: 'Protokolliert', text: 'Jede Anmeldung, jeder Fehlversuch und jede Abmeldung, mit Zeit und Adresse.' },
  ]}
  caption="Der zweite Faktor ist je Person freiwillig oder für die Rollen Pflicht, die Sie festlegen."
/>

## Passwortregeln

nexxus folgt den aktuellen Empfehlungen von BSI und NIST: Länge und Prüfung gegen geleakte Passwörter, keine erzwungenen Zeichenklassen, kein Ablaufdatum.

- **Mindestens 12 Zeichen.**
- **Nicht der Benutzername.**
- **Nicht aus einem bekannten Datenleck.** nexxus prüft neue Passwörter gegen die Sammlung geleakter Passwörter von Have I Been Pwned. Nur die ersten fünf Zeichen des SHA-1-Hashs verlassen den Server, das Passwort selbst wird nie übertragen. Ist der Dienst nicht erreichbar, wird das Passwort angenommen.
- **Keine Regeln wie „eine Ziffer, ein Sonderzeichen“**, weil sie zu Passwörtern wie „Passwort1!“ führen. **Kein Ablaufdatum**, weil erzwungene Wechsel zu „Passwort2!“ führen.

Die Regeln gelten überall, wo ein Passwort gesetzt wird: beim ersten Administrator, beim Annehmen einer Einladung, beim Ändern des eigenen Passworts und wenn ein Administrator ein neues setzt. Passwörter werden als BCrypt-Hash gespeichert. Die Meldungen des Servers:

- „Das Passwort muss mindestens 12 Zeichen lang sein.“
- „Das Passwort darf nicht dem Benutzernamen entsprechen.“
- „Dieses Passwort taucht in bekannten Datenlecks auf und kann nicht verwendet werden.“

### Das eigene Passwort ändern

<Steps>

1. Klicken Sie unten in der Leiste links auf Ihr Bild, wählen Sie <Ui>Mein Profil</Ui> und öffnen Sie den Reiter <Ui>Sicherheit</Ui>.

   <Screenshot src={shot_security_profile} url="/profil/sicherheit" alt={"Der Reiter Sicherheit im eigenen Profil"} />

2. Geben Sie unter <Ui>Passwort</Ui> das neue Passwort in <Ui>Neues Passwort</Ui> und <Ui>Neues Passwort wiederholen</Ui> ein.

3. Klicken Sie auf <Ui>Passwort ändern</Ui>. nexxus bittet Sie zu bestätigen, dass Sie es sind (siehe [Bestätigen, dass Sie es sind](#bestätigen-dass-sie-es-sind)): mit dem Code aus Ihrer Authenticator-App oder, wenn Sie keine haben, mit Ihrem aktuellen Passwort.

4. Die Meldung <Ui>Passwort geändert.</Ui> bestätigt es.

</Steps>

Ein neues Passwort beendet jede gemerkte Anmeldung (<Ui>Angemeldet bleiben</Ui>) auf allen Geräten, und jeder gemerkte Browser fragt wieder nach dem zweiten Faktor: <Ui>Nach dem Ändern fragen alle gemerkten Browser bei der nächsten Anmeldung wieder nach dem zweiten Faktor.</Ui>

Wer sich immer mit Microsoft oder mit einem Anmelde-Link anmeldet, hat kein Passwort. Der Reiter zeigt dann: <Ui>Ihr Konto hat kein Passwort. Sie melden sich per Anmeldelink oder über Microsoft an; ein Passwort setzt die Administration.</Ui>

### Wenn jemand sein Passwort vergisst

<Ui>Passwort vergessen</Ui> auf der Anmeldeseite öffnet <Ui>Passwort zurücksetzen</Ui>. Die Person gibt ihre <Ui>E-Mail-Adresse</Ui> ein und klickt auf <Ui>Link senden</Ui>. nexxus schickt eine Mail mit dem Knopf <Ui>Neues Passwort vergeben</Ui>. Der Link darin gilt 60 Minuten und nur einmal und öffnet die Seite <Ui>Neues Passwort vergeben</Ui>, die das Konto mit Namen und Adresse nennt. Nach <Ui>Passwort speichern</Ui> meldet sich die Person wie gewohnt an, der Benutzername ist schon eingetragen.

- Die Seite antwortet immer <Ui>Bitte prüfen Sie Ihr Postfach. Der Link ist 60 Minuten gültig.</Ui>, auch für eine Adresse ohne Konto. So verrät sie nicht, wer ein Konto hat.
- Es gelten die Regeln des Anmelde-Links: Gehört die Adresse zu mehr als einem Konto, geht keine Mail hinaus, und mehr als drei Links in 15 Minuten verschickt nexxus für ein Konto nicht.
- Verstößt das neue Passwort gegen die Regeln, nennt die Seite den Grund. Der Link bleibt dann gültig.
- Offene Einladungen und Servicekonten bekommen keinen Link. Eine Einladung wird über ihren eigenen Link angenommen.
- Die Authenticator-App bleibt eingerichtet und fragt bei der Anmeldung weiter nach dem Code. Wie jedes neue Passwort beendet auch dieses <Ui>Angemeldet bleiben</Ui> und die gemerkten Browser.
- Wer bisher kein Passwort hatte, weil er sich per Anmelde-Link oder über Microsoft anmeldet, bekommt auf diesem Weg eines.

Kommt keine Mail an, etwa weil kein Postausgangsserver eingerichtet ist, setzt ein Administrator das Passwort:

1. Ein Administrator öffnet die Person unter <MenuPath to="Administration > Benutzer & Zugriff > Benutzer" />, wählt neben <Ui>Speichern</Ui> im Menü <Ui>Weitere Aktionen</Ui> (⋮) <Ui>Passwort ändern</Ui> und setzt ein vorläufiges Passwort.
2. Mit <Ui>Passwortänderung erzwingen/aufheben</Ui> sorgt er dafür, dass die Person bei der nächsten Anmeldung ein eigenes Passwort wählt.

## Zwei-Faktor-Authentifizierung

Mit Zwei-Faktor-Authentifizierung reicht ein Passwort allein nicht mehr. Die Person gibt zusätzlich einen sechsstelligen Code ein, den ihr Telefon alle 30 Sekunden neu erzeugt. Jede Authenticator-App funktioniert, etwa Google Authenticator, Microsoft Authenticator, Aegis oder 1Password.

### Einrichten

<Steps>

1. Öffnen Sie <Ui>Mein Profil</Ui> und den Reiter <Ui>Sicherheit</Ui>. Unter <Ui>Zwei-Faktor-Authentifizierung</Ui> steht <Ui>Nicht eingerichtet</Ui>. Klicken Sie auf <Ui>Einrichten</Ui>.

2. Der Dialog <Ui>Sicherheit</Ui> öffnet sich. Klicken Sie neben <Ui>Zwei-Faktor-Authentifizierung (Authenticator-App)</Ui> auf <Ui>Einrichten</Ui>.

   <Screenshot src={shot_security_totp_setup} url="/profil/sicherheit" alt={"Einrichten der Authenticator-App mit QR-Code und Backup-Codes"} caption={"Sichern Sie die Backup-Codes jetzt: sie erscheinen nur einmal."} />

3. Scannen Sie den QR-Code mit Ihrer Authenticator-App. Wenn das Scannen nicht geht, tippen Sie den <Ui>Manueller Schlüssel:</Ui> in die App.

4. Sichern Sie die **Backup-Codes**. Es sind acht, je 20 Zeichen lang, und nexxus zeigt sie nur jetzt. <Ui>Kopieren</Ui> legt sie in die Zwischenablage. Bewahren Sie sie in einem Passwortmanager oder ausgedruckt auf, aber nicht auf demselben Telefon.

5. Geben Sie den aktuellen Code aus der App in <Ui>Code aus der App</Ui> ein und klicken Sie auf <Ui>Aktivieren</Ui>. Die Meldung <Ui>Authenticator-App erfolgreich eingerichtet.</Ui> bestätigt es, und das Profil zeigt <Ui>Aktiv seit</Ui> mit dem Datum.

</Steps>

### Mit Code anmelden

Nach dem Passwort fragt die Anmeldeseite nach dem Code: <Ui>Zwei-Faktor-Authentifizierung</Ui>, <Ui>Geben Sie den Code aus Ihrer Authenticator-App ein</Ui>. Tippen Sie die sechs Ziffern ein; sobald sie vollständig sind, geht das Formular von selbst ab.

<Screenshot src={shot_security_totp_login} url="/login" alt={"Die Code-Abfrage bei der Anmeldung"} />

- **Kein Telefon zur Hand?** Klicken Sie auf <Ui>Backup-Code verwenden</Ui> und geben Sie einen der Backup-Codes ein. Jeder gilt einmal.
- **Ihr eigener Rechner?** Setzen Sie den Haken bei <Ui>Dieses Gerät 30 Tage merken</Ui> (siehe [Gemerkte Browser](#gemerkte-browser)).
- **Ein falscher Code** schickt Sie zurück zum Passwort: <Ui>Der eingegebene Code war ungültig. Bitte melden Sie sich erneut an.</Ui> Das ist Absicht. Nach dem Passwort bleibt die Code-Eingabe 2 Minuten lang und nur in diesem Browser offen, und ein falscher Code schließt sie.

Auch der Anmelde-Link per E-Mail fragt nach dem Code. Die Anmeldung mit Microsoft nicht: dort richten Sie die Mehr-Faktor-Authentifizierung in Microsoft Entra ein.

### Abschalten

Öffnen Sie den Dialog <Ui>Sicherheit</Ui> mit <Ui>Verwalten</Ui> und klicken Sie auf <Ui>Deaktivieren</Ui>. nexxus fragt nach einem aktuellen Code aus der App oder einem Backup-Code: <Ui>Zum Deaktivieren geben Sie einen aktuellen Code aus Ihrer Authenticator-App oder einen Backup-Code ein.</Ui> Danach erscheint <Ui>Authenticator-App wurde deaktiviert.</Ui> Verlangt Ihre Rolle die App, werden Sie bei der nächsten Anmeldung erneut zur Einrichtung geführt.

### Wenn das Telefon weg ist

Hat jemand Telefon und Backup-Codes verloren, setzt ein Administrator die App zurück: Person öffnen, Reiter <Ui>Sicherheit</Ui>, <Ui>2FA zurücksetzen</Ui> klicken und bestätigen: <Ui>Möchten Sie die Authenticator-App dieses Benutzers wirklich zurücksetzen? Der Benutzer kann sich danach wieder ohne zweiten Faktor anmelden.</Ui> Das Zurücksetzen entfernt auch alle gemerkten Browser der Person, damit ein gestohlener Laptop den neuen Faktor nicht überspringt.

## Gemerkte Browser

Am eigenen Rechner ist ein Code bei jeder Anmeldung lästig. Setzen Sie bei der Code-Eingabe den Haken <Ui>Dieses Gerät 30 Tage merken</Ui>, dann überspringt dieser Browser den Code 30 Tage lang. **Das Passwort wird immer verlangt.** Ein gemerkter Browser ersetzt nur den Code.

<Screenshot src={shot_security_devices} url="/profil/sicherheit" alt={"Die gemerkten Browser eines Kontos"} caption={"Ein Klick meldet einen verlorenen Laptop ab."} />

Ihre gemerkten Browser stehen im Dialog <Ui>Sicherheit</Ui> unter <Ui>Gemerkte Geräte</Ui>: <Ui>Auf diesen Browsern entfällt der Code für 30 Tage. Das Passwort wird weiterhin verlangt.</Ui> Jeder Eintrag zeigt eine Bezeichnung wie „Chrome auf macOS“, den Chip <Ui>Dieses Gerät</Ui> für den Browser, an dem Sie gerade sitzen, wann und von welcher Adresse er gemerkt wurde, wann er zuletzt benutzt wurde und wann er abläuft.

- Die Schaltfläche <Ui>Gerät abmelden</Ui> am Ende eines Eintrags entfernt einen Browser: er fragt bei der nächsten Anmeldung wieder nach dem Code.
- <Ui>Alle abmelden</Ui> entfernt alle gemerkten Browser, auch diesen.
- Beide fragen einmal nach, ob Sie sicher sind, verlangen aber keinen Code, damit Sie schnell handeln können, wenn ein Laptop weg ist.

nexxus entfernt alle gemerkten Browser von selbst, wenn sich das Passwort ändert, wenn Sie eine neue Authenticator-App einrichten oder sie abschalten und wenn ein Administrator sie zurücksetzt. Das Cookie, das einen gemerkten Browser kennzeichnet, wechselt bei jeder Benutzung. Taucht eine alte Kopie davon auf, schließt nexxus daraus, dass es kopiert wurde, und entfernt **alle** gemerkten Browser des Kontos.

## Zwei-Faktor-Pflicht je Rolle

Sie können die Authenticator-App für bestimmte Rollen zur Pflicht machen. Personen mit einer solchen Rolle kommen ohne App nicht in nexxus; bei der nächsten Anmeldung werden sie einmalig durch die Einrichtung geführt, auf jedem Anmeldeweg, auch über Microsoft und den Anmelde-Link.

Die Liste arbeitet mit den **Systemrollen** (ADMIN, STAFF und die übrigen), nicht mit Berechtigungsrollen. Machen Sie sie mindestens für ADMIN zur Pflicht.

<Steps>

1. Öffnen Sie <MenuPath to="Administration > Betrieb > Systemkonfiguration" /> und gehen Sie zum Abschnitt <Ui>Zwei-Faktor-Pflicht</Ui>.

   <Screenshot src={shot_security_mandatory_2fa} url="/system-config" alt={"Zwei-Faktor-Pflicht für die Rolle ADMIN"} />

2. Wählen Sie die Rollen unter <Ui>Rollen mit verpflichtender Authenticator-App</Ui>. Leer heißt: für niemanden verpflichtend.

   Prüfen Sie vorher, dass mindestens ein Konto mit dieser Rolle die App einrichten kann: <Ui>Vor dem Eintragen prüfen, dass mindestens ein Konto dieser Rolle ein Smartphone zur Hand hat.</Ui>

3. Klicken Sie auf <Ui>Speichern</Ui>. nexxus bittet Sie zu bestätigen, dass Sie es sind.

4. Nach dem Speichern bekommt jeder Administrator des Mandanten mit E-Mail-Adresse eine Mail: wer die Regel wann geändert hat und wie sie vorher und nachher lautete.

</Steps>

Nehmen Sie eine Rolle aus der Liste, warnt die Seite vor dem Speichern, zum Beispiel <Ui>Konten der Rolle STAFF können sich künftig ohne zweiten Faktor anmelden.</Ui>

**Was die betroffenen Personen sehen.** Nach dem Passwort (oder dem Anmelde-Link oder der Microsoft-Anmeldung) erscheint die Seite <Ui>Zwei-Faktor-Anmeldung einrichten</Ui>: <Ui>Ihre Rolle verlangt eine Authenticator-App. Einmalig einrichten, danach genügt der Code.</Ui> Sie zeigt den QR-Code, den <Ui>Manueller Schlüssel:</Ui> und die Backup-Codes. Die Person gibt den Code unter <Ui>Code aus der App</Ui> ein, klickt auf <Ui>Einrichtung abschließen</Ui> und ist angemeldet. Ein „später“ gibt es nicht. Konten, die einen zweiten Faktor brauchen, bekommen nie das 30-Tage-Cookie von <Ui>Angemeldet bleiben</Ui>.

## Bestätigen, dass Sie es sind

Manche Änderungen brauchen mehr als eine offene Sitzung, denn am Rechner könnte gerade jemand anderes sitzen. nexxus verlangt dann einen frischen Nachweis, dass Sie es sind. Das passiert, wenn Sie:

- Ihr eigenes Passwort ändern,
- ein API-Token anlegen oder rotieren,
- die Liste der Rollen mit Zwei-Faktor-Pflicht ändern.

<Screenshot src={shot_security_step_up} url="/profil/sicherheit" alt={"Der Bestätigungsdialog vor einer heiklen Änderung"} />

Der Dialog <Ui>Bitte bestätigen</Ui> fragt nach dem <Ui>Code aus Ihrer Authenticator-App</Ui> (<Ui>Kein Zugriff auf die App? Ein Backup-Code gilt ebenfalls.</Ui>) oder, wenn Ihr Konto keine App hat, nach <Ui>Ihr Passwort</Ui>. Klicken Sie auf <Ui>Bestätigen</Ui>. Ein gemerkter Browser überspringt diesen Schritt nicht, und nexxus fragt bei jeder solchen Änderung neu.

## Angemeldet bleiben und Sitzungen

| Wie Sie sich angemeldet haben | Wie lange Sie angemeldet bleiben |
|---|---|
| Ohne <Ui>Angemeldet bleiben</Ui> | Bis der Browser geschlossen wird, und höchstens 12 Stunden ohne Aktivität. Ein offener Tab zählt als Aktivität. |
| Mit <Ui>Angemeldet bleiben</Ui> | 30 Tage, gerechnet ab der letzten Benutzung. Der Browser meldet Sie nach dem Schließen wieder an. |
| Mit Authenticator-App, Haken gesetzt | Die Sitzung hält bis zu 30 Tage, aber das Schließen des Browsers beendet sie. Mit <Ui>Dieses Gerät 30 Tage merken</Ui> entfällt beim nächsten Mal der Code. |
| Mit Microsoft | 30 Tage gemerkt, wie mit gesetztem Haken, es sei denn, das Konto braucht einen zweiten Faktor. |

**Abmelden** mit <Ui>Abmelden</Ui> im Menü Ihres Bildes (<Ui>Wollen Sie sich wirklich abmelden?</Ui>) beendet die Sitzung und löscht auf dem Server Ihre gemerkten Anmeldungen, für jedes Gerät. Ein kopiertes Cookie funktioniert danach nicht mehr, und andere Browser fragen nach einer neuen Anmeldung, sobald ihre laufende Sitzung endet. Läuft eine Sitzung ab, führt der nächste Klick zur Anmeldeseite.

Melden Sie sich ohne Haken bei <Ui>Angemeldet bleiben</Ui> an, entfernt nexxus außerdem eine gemerkte Anmeldung, die dieser Browser vielleicht noch von einer früheren Person trägt. Ein gemeinsam genutzter Rechner meldet also nicht die nächste Person als die vorige an.

## Anmelde-Link per E-Mail

Mit dem Anmelde-Link melden sich Personen ohne Passwort an, etwa an einem Rechner, an dem sie es nicht eintippen möchten.

<Steps>

1. Klicken Sie auf der Anmeldeseite auf <Ui>Anmelde-Link per E-Mail</Ui>.

2. Geben Sie die Adresse unter <Ui>E-Mail-Adresse</Ui> ein und klicken Sie auf <Ui>Link senden</Ui>.

3. Die Seite sagt <Ui>Bitte prüfen Sie Ihr Postfach. Der Link ist 15 Minuten gültig.</Ui> Die Mail enthält den Knopf „Jetzt anmelden“.

4. Der Link meldet die Person an. Hat das Konto eine Authenticator-App, fragt nexxus vorher nach dem Code.

</Steps>

- Der Link gilt **15 Minuten** und funktioniert **einmal**.
- nexxus verschickt einen Link nur, wenn genau ein Konto diese E-Mail-Adresse hat. Die Seite sagt in jedem Fall dasselbe, damit niemand herausfinden kann, ob es zu einer Adresse ein Konto gibt.
- Ein abgelaufener oder benutzter Link zeigt <Ui>Der Anmelde-Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen an.</Ui>
- Der Anmelde-Link braucht einen funktionierenden Mailversand. Ohne ihn sagt die Seite trotzdem „Bitte prüfen Sie Ihr Postfach“, aber es kommt nichts an.

## Sperren und Begrenzungen

nexxus sperrt Konten nach Fehlversuchen nicht. Es protokolliert jeden Fehlversuch (siehe [Anmeldeprotokoll](#anmeldeprotokoll-und-aktivität)) und begrenzt, wie oft bestimmte Anfragen von einer Adresse kommen dürfen:

| Was | Grenze | Dann |
|---|---|---|
| Anmelde-Link anfordern | 10 je Stunde und Adresse, dazu 3 je 15 Minuten und Konto | <Ui>Zu viele Versuche. Bitte warten Sie einen Moment und versuchen Sie es erneut.</Ui> Anfragen über die Grenze je Konto werden still verworfen. |
| Code eingeben (Anmeldung, Einrichtung, Bestätigung) | 5 je 2 Minuten und Adresse | <Ui>Zu viele Versuche. Bitte warten Sie einen Moment und versuchen Sie es erneut.</Ui> |
| Falsche API-Tokens | 20 je Minute und Adresse | Token-Anfragen von dieser Adresse werden eine Minute lang abgewiesen, auch mit gültigen Tokens |

Für das Passwortformular selbst setzt nexxus keine Grenze. Ist Ihre Installation aus dem Internet erreichbar, setzen Sie davor eine Begrenzung für die Anmeldung, im Reverse Proxy oder in der Web Application Firewall.

## Persönliche API-Tokens

Ein persönliches API-Token ist Ihr Konto ohne Browser: ein Skript, ein BI-Werkzeug oder ein Assistent schickt es statt eines Sitzungs-Cookies und arbeitet mit genau Ihren Rechten. Sie können es jederzeit zurückziehen.

### Ein Token anlegen

<Steps>

1. Öffnen Sie <Ui>Mein Profil</Ui> und den Reiter <Ui>API-Tokens</Ui>.

   <Screenshot src={shot_security_api_tokens} url="/profil/api-tokens" alt={"Persönliche API-Tokens direkt nach dem Rotieren eines Tokens"} caption={"Das neue Token erscheint einmal. nexxus speichert nur einen Hash."} />

2. Klicken Sie auf <Ui>Neues Token</Ui>. Tragen Sie unter <Ui>Wofür ist das Token?</Ui> etwa „BI-Export“ ein, damit Sie später wissen, welches Sie zurückziehen.

3. Wählen Sie <Ui>Gültig für</Ui>: <Ui>30 Tage</Ui>, <Ui>90 Tage</Ui>, <Ui>1 Jahr</Ui> (voreingestellt) oder <Ui>Unbegrenzt</Ui>. Kurz ist besser, wenn das Token in einer Datei liegt, die jemand anderes lesen könnte.

4. Klicken Sie auf <Ui>Token anlegen</Ui> und bestätigen Sie, dass Sie es sind, mit Ihrem App-Code oder Ihrem Passwort.

5. Das Token erscheint einmal oben, es beginnt mit `cx_`. Klicken Sie auf <Ui>Kopieren</Ui> und legen Sie es dort ab, wo das Skript es lesen kann. nexxus speichert nur einen Hash: ist das Token weg, legen Sie ein neues an.

</Steps>

### Benutzen

Schicken Sie das Token im Header `Authorization`. Eine Anmeldung oder Sitzung gibt es nicht:

```bash
# Wer bin ich?
curl -H "Authorization: Bearer cx_..." https://<Ihre nexxus-Adresse>/api/v1/user/current

# Die OpenAPI-Beschreibung aller Routen, erzeugt aus dem laufenden Code
curl -H "Authorization: Bearer cx_..." https://<Ihre nexxus-Adresse>/api/openapi.json
```

<Ui>API-Dokumentation</Ui> neben der Tokenliste öffnet dieselbe Beschreibung als lesbare Seite. Jede Änderung mit einem Token trägt Ihren Namen und Ihren Mandanten, als hätten Sie selbst geklickt.

Ein falsches, abgelaufenes oder zurückgezogenes Token bekommt die Antwort „Ungültiges oder zurückgezogenes API-Token.“, ohne zu sagen, welcher der drei Fälle vorliegt.

### Rotieren und zurückziehen

Die Liste zeigt jedes Token mit <Ui>Name</Ui> (darunter die ersten Zeichen des Tokens, zum Wiedererkennen), <Ui>Angelegt</Ui>, <Ui>Zuletzt benutzt</Ui>, <Ui>Gültig bis</Ui> und <Ui>Status</Ui> (<Ui>gültig</Ui>, <Ui>abgelaufen</Ui> oder <Ui>zurückgezogen</Ui>).

- <Ui>Rotieren</Ui> ersetzt ein Token: das alte gilt sofort nicht mehr, und ein neues mit demselben Namen und der Restlaufzeit in ganzen Tagen erscheint einmal. Sie bestätigen, dass Sie es sind.
- <Ui>Zurückziehen</Ui> beendet ein Token sofort und endgültig. Ein Code ist dafür nicht nötig, damit Sie schnell handeln können. Zurückgezogene Tokens bleiben als Nachweis in der Liste.

Sie können höchstens 20 gültige Tokens haben. Wird ein Konto gelöscht, gelten alle seine Tokens sofort nicht mehr. Administratoren sehen die Tokens anderer Personen nicht.

### Was ein Token nicht kann

Ein Token kann alles, was Ihr Konto kann, mit einer Ausnahme: nichts, was das Konto selbst verändert. Tokens verwalten, das Passwort ändern, die Authenticator-App einrichten oder abschalten, gemerkte Browser verwalten und das Profil bearbeiten geht nur nach einer Anmeldung im Browser. Die Antwort lautet „Diese Aktion ist mit einem API-Token nicht möglich“. Ein abgeflossenes Token kann sich also weder selbst verewigen noch den zweiten Faktor abschalten. Eigene Scopes haben Tokens nicht: ein Token, das weniger dürfen soll, braucht ein Konto mit weniger Rechten.

## Anmeldeprotokoll und Aktivität

nexxus protokolliert jede Anmeldung, jeden Fehlversuch, jede Abmeldung, jede Passwortänderung und jeden gemerkten Browser, mit Zeit, Adresse und Browser. Fehlversuche werden mit dem eingetippten Benutzernamen festgehalten, auch wenn es kein solches Konto gibt.

**Jede Person** sieht ihre eigenen Einträge unter <Ui>Mein Profil</Ui>, Reiter <Ui>Aktivität</Ui>: <Ui>Was unter Ihrem Konto geschehen ist, neueste zuerst: Anmeldungen, auch fehlgeschlagene, und Änderungen an Daten. Eine Anmeldung, die Sie nicht erkennen, melden Sie bitte der Administration.</Ui>

<Screenshot src={shot_security_activity} url="/profil/aktivitaet" alt={"Die eigene Aktivität mit Anmeldungen und einem Fehlversuch"} />

| Eintrag | Bedeutung |
|---|---|
| <Ui>Angemeldet</Ui> | Eine Sitzung wurde erteilt. Dahinter steht der Weg: <Ui>mit Passwort</Ui>, <Ui>mit Passwort und Code</Ui>, <Ui>per Anmeldelink</Ui>, <Ui>über Microsoft</Ui> oder <Ui>gemerkter Browser</Ui> |
| <Ui>Anmeldung fehlgeschlagen</Ui> | Falsches Passwort oder falscher Code |
| <Ui>Passwort richtig, Code angefordert</Ui> | Das Passwort stimmte, der zweite Faktor stand noch aus. Noch keine Anmeldung. |
| <Ui>Abgemeldet</Ui> | Die Person hat sich abgemeldet |
| <Ui>Passwort geändert</Ui> | Von der Person selbst oder von einem Administrator |
| <Ui>Browser gemerkt</Ui> | Ein Browser wurde für 30 Tage gemerkt |

**Administratoren** sehen dasselbe je Person im Reiter <Ui>Aktivität</Ui> des Benutzers und die Einträge aller Konten unter <MenuPath to="Administration > Betrieb > Protokolle > Ereignis-Logs" />. Jedes Konto merkt sich außerdem seine letzte Anmeldung. So fallen Konten auf, die niemand mehr benutzt.

## Das Änderungsprotokoll

Das Änderungsprotokoll beantwortet „wer hat was wann geändert“. Für jeden angelegten Datensatz schreibt es einen Eintrag, für jede Änderung einen Eintrag je geändertem Feld, mit altem und neuem Wert, wer geändert hat und wann. Gelöschte Datensätze bleiben in nexxus erhalten und erscheinen deshalb ebenfalls als Änderung.

<Screenshot src={shot_security_audit_log} url="/auditLogs" alt={"Das Änderungsprotokoll, gefiltert auf einen Datensatz, mit Änderungen je Feld"} caption={"Jedes geänderte Feld, mit altem und neuem Wert."} />

Administratoren öffnen es unter <MenuPath to="Administration > Betrieb > Protokolle > Änderungsprotokoll" />. Unter <Ui>Filter</Ui> grenzen Sie es nach <Ui>Entity-ID</Ui>, <Ui>Entity-Klasse</Ui>, <Ui>Feldname</Ui> und <Ui>Erstellt</Ui> ein; ein Teil des Klassennamens genügt, etwa `Partner`. Die Spalten heißen <Ui>Erstellt</Ui>, <Ui>Ausgelöst von</Ui>, <Ui>Entity-Klasse</Ui>, <Ui>Entity-ID</Ui>, <Ui>Ereignis</Ui>, <Ui>Feldname</Ui>, <Ui>Alter Wert</Ui> und <Ui>Neuer Wert</Ui>. Die Entity-Klasse ist der technische Name der Datensatzart, etwa ein Klassenname, der auf `Partner` endet.

Änderungen, die der KI-Assistent nach Ihrem Klick ausführt, und Änderungen mit Ihrem API-Token tragen Ihren Namen. Arbeit, die ohne Person läuft, trägt „system“.

### Wie lange Protokolle bleiben

Standardmäßig behält nexxus Einträge im Änderungsprotokoll 365 Tage und Anmelde- und Ereigniseinträge 90 Tage. Der Aufräumjob ist in einer neuen Installation **ausgeschaltet**, damit nichts gelöscht wird, bevor Sie entschieden haben. Zum Einschalten öffnen Sie <MenuPath to="Administration > Betrieb > Wartung > Cron-Jobs" /> und setzen den Job `LogRetention` auf <Ui>Aktiv</Ui>. Er läuft jede Nacht. Selbstbetreiber ändern die Fristen mit `app.logging.retention.auditLogDays` und `app.logging.retention.eventLogDays`; geplante Jobs laufen nur, wenn `app.disableCronJobs` auf `false` steht, was das Produktionsprofil setzt.

## Mandantentrennung

Alle Daten Ihrer Organisation liegen in einem Mandanten. In Installationen mit mehreren Mandanten hält nexxus sie so auseinander:

- **Jeder Datensatz trägt seinen Mandanten.** nexxus setzt ihn beim Anlegen aus der angemeldeten Person. Eine Anfrage kann ihn weder wählen noch ändern.
- **Jedes Lesen ist nach dem Mandanten** der fragenden Person gefiltert. Datensätze eines anderen Mandanten werden abgewiesen.
- **Rollen gelten innerhalb eines Mandanten.** Eine Berechtigungsrolle und ihre Zuweisungen gehören zu genau einem Mandanten.
- **Einstellungen gelten je Mandant:** KI-Anbieter und ihre Schlüssel, Mailserver, Microsoft-Anmeldung, Zwei-Faktor-Pflicht.

Alle Mandanten teilen sich eine Datenbank. Die Systemrolle ADMIN gilt nur im eigenen Mandanten: Ein Administrator verwaltet seinen Mandanten und erreicht keine Datensätze der anderen. Über Mandantengrenzen hinweg arbeitet nur SUPERADMIN, etwa beim Anlegen von Mandanten unter <MenuPath to="Administration > Unternehmen > Mandanten" /> und bei Einstellungen, die für die ganze Installation gelten. Geben Sie SUPERADMIN nur den Personen, die die Installation betreiben.

## Geheimnisse im Ruhezustand

nexxus speichert Geheimnisse so, dass eine Kopie der Datenbank allein sie nicht preisgibt:

- **Verschlüsselt** (AES-256-GCM, mit dem Geheimnisschlüssel der Installation): Geheimnisse der Authenticator-Apps, das Microsoft-Client-Secret, Connector-Tokens und Client-Secrets, Zugangsdaten von MCP-Connectoren, Schlüssel der KI-Anbieter, Passwörter von Mailservern.
- **Gehasht, nicht wiederherstellbar:** Passwörter und Backup-Codes (BCrypt), API-Tokens, Einladungs- und Anmelde-Links, Cookies gemerkter Browser (SHA-256).

Geheimnisse werden beim Anlegen einmal gezeigt und nie wieder. Felder für gespeicherte Geheimnisse bleiben leer: lassen Sie sie leer, um den gespeicherten Wert zu behalten.

:::note[Für Selbstbetreiber]
| Einstellung | Zweck |
|---|---|
| `NEXXUS_SECRETS_KEY` | Verschlüsselt alle gespeicherten Geheimnisse. Base64 von 32 Bytes: `openssl rand -base64 32`. Ohne ihn startet nexxus nicht, außer auf einem Entwicklerrechner (`./gradlew bootRun` oder das Profil `local`, `dev` oder `test`). Bewahren Sie ihn sicher auf: ohne ihn lassen sich gespeicherte Geheimnisse nicht mehr lesen. |
| `NEXXUS_REMEMBER_ME_KEY` | Signiert das Cookie von „Angemeldet bleiben“. Unter einem Produktionsprofil Pflicht. Fehlt er, nimmt nexxus bei jedem Start einen neuen Zufallsschlüssel, und gemerkte Anmeldungen überleben keinen Neustart. |
| `NEXXUS_SETUP_TOKEN` | Schützt die Ersteinrichtung einer öffentlich erreichbaren Installation mit einem Code. |
| `app.auth.password.min-length` | Mindestlänge des Passworts, Standard 12 |
| `app.auth.password.check-compromised` | Die Prüfung gegen geleakte Passwörter, Standard `true`. Auf Hosts ohne ausgehendes HTTPS auf `false` setzen. |
| `spring.session.timeout` | Lebensdauer mit <Ui>Angemeldet bleiben</Ui>, Standard 30 Tage |
| `app.auth.session.not-remembered-timeout` | Grenze ohne Aktivität ohne Haken, Standard 12 Stunden |
| `app.auth.trusted-device.days` | Wie lange ein gemerkter Browser den Code überspringt, Standard 30 |

Das Sitzungs-Cookie ist HttpOnly, SameSite=Lax und unter dem Produktionsprofil Secure. Sitzungen liegen unter dem Produktionsprofil in Redis und überstehen so Neustarts.
:::

## Wenn etwas schiefgeht

| Was Sie sehen | Ursache und Abhilfe |
|---|---|
| <Ui>Der eingegebene Code war ungültig. Bitte melden Sie sich erneut an.</Ui> | Der Code war falsch oder zu alt. Prüfen Sie die Uhrzeit des Telefons (die Codes hängen davon ab) und melden Sie sich neu an. |
| <Ui>Die Einrichtung ist abgelaufen. Bitte erneut anmelden.</Ui> | Die Pflicht-Einrichtung hat nach dem Passwort länger als 2 Minuten gedauert. Melden Sie sich neu an und richten Sie die App gleich ein. |
| <Ui>Zu viele Versuche. Bitte warten Sie einen Moment und versuchen Sie es erneut.</Ui> | Zu viele Codes oder Link-Anforderungen von Ihrer Adresse. Warten Sie zwei Minuten. |
| „Der Code ist ungültig oder es gab zu viele Versuche.“ | Im Bestätigungsdialog. Nehmen Sie den aktuellen Code oder einen Backup-Code. |
| „Das Passwort ist falsch.“ | Im Bestätigungsdialog: Ihr aktuelles Passwort, nicht das neue. |
| „Höchstens 20 gültige Tokens je Konto“ | Ziehen Sie ein Token zurück, das Sie nicht mehr brauchen. |
| „Diese Aktion ist mit einem API-Token nicht möglich“ | Die Anfrage verändert das Konto selbst. Erledigen Sie das im Browser. |
| „Unbekannte Rolle(n): ...“ | Eine Rolle in der Zwei-Faktor-Pflicht existiert nicht. Wählen Sie die Rollen aus der Liste. |
| Der Anmelde-Link kommt nicht an | Der Mailversand ist nicht eingerichtet oder nicht bestätigt, oder mehrere Konten teilen sich die Adresse. Prüfen Sie den Einrichtungsschritt <Ui>E-Mail</Ui>. |

## Wie es weitergeht

<CardGrid>
  <LinkCard title="Rollen und Rechte" description="Legen Sie fest, wer was darf." href="/de/setup/roles/" />
  <LinkCard title="Anmeldung und OAuth" description="Anmeldung mit Microsoft und die anderen Bedeutungen von OAuth." href="/de/setup/sign-in/" />
  <LinkCard title="Benutzer einladen" description="Konten, Einladungen und Zugänge entfernen." href="/de/setup/invite-users/" />
</CardGrid>