Keine Berechtigung.

'; return; } $message = ''; $messageType = 'success'; if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') { verify_csrf(); $action = (string) ($_POST['action'] ?? ''); if ($action === 'save') { $issuer = rtrim(trim((string) ($_POST['issuer'] ?? '')), '/'); $clientId = trim((string) ($_POST['client_id'] ?? '')); $secretIn = (string) ($_POST['client_secret'] ?? ''); $scopes = trim(preg_replace('/\s+/', ' ', (string) ($_POST['scopes'] ?? ''))); if ($issuer !== '' && !authentik_url_ok($issuer)) { $message = 'Bitte die Issuer-Adresse mit https:// angeben, ohne Parameter (zum Beispiel https://auth.example.de/application/o/deskhub).'; $messageType = 'error'; } elseif (strlen($clientId) > 200 || preg_match('/[\x00-\x20]/', $clientId)) { $message = 'Die Client-ID ist ungültig.'; $messageType = 'error'; } elseif ($scopes !== '' && !preg_match('/^[A-Za-z0-9_.:\- ]{1,200}$/', $scopes)) { $message = 'Die Bereiche (Scopes) enthalten ungültige Zeichen.'; $messageType = 'error'; } else { plugin_set_setting(AUTHENTIK, 'issuer', $issuer); plugin_set_setting(AUTHENTIK, 'client_id', $clientId); if ($secretIn !== '') plugin_set_setting(AUTHENTIK, 'client_secret_enc', encrypt_secret($secretIn)); plugin_set_setting(AUTHENTIK, 'scopes', $scopes !== '' ? $scopes : 'openid email profile'); plugin_set_setting(AUTHENTIK, 'group', mb_substr(trim((string) ($_POST['group'] ?? '')), 0, 100)); plugin_set_setting(AUTHENTIK, 'label', mb_substr(trim((string) ($_POST['label'] ?? '')), 0, 60)); plugin_set_setting(AUTHENTIK, 'enabled', !empty($_POST['enabled']) ? '1' : '0'); plugin_set_setting(AUTHENTIK, 'only_linked', !empty($_POST['only_linked']) ? '1' : '0'); plugin_set_setting(AUTHENTIK, 'require_verified', !empty($_POST['require_verified']) ? '1' : '0'); plugin_set_setting(AUTHENTIK, 'customers', !empty($_POST['customers']) ? '1' : '0'); plugin_set_setting(AUTHENTIK, 'customer_create', !empty($_POST['customer_create']) ? '1' : '0'); plugin_set_setting(AUTHENTIK, 'customer_group', mb_substr(trim((string) ($_POST['customer_group'] ?? '')), 0, 100)); plugin_set_setting(AUTHENTIK, 'discovery', ''); // neu laden audit_log((int) $staff['id'], 'authentik-Anmeldung: Einstellungen geändert' . (!empty($_POST['enabled']) ? ' (eingeschaltet)' : ' (ausgeschaltet)')); $message = 'Gespeichert.'; } } elseif ($action === 'unlink_staff') { $sid = (int) ($_POST['staff_id'] ?? 0); if ($sid > 0 && authentik_link_of($sid) !== null) { authentik_link_remove($sid); audit_log((int) $staff['id'], 'authentik: Verknüpfung von Mitarbeiter #' . $sid . ' gelöst'); $message = 'Die Verknüpfung ist gelöst.'; } } elseif ($action === 'test') { $cfg = authentik_config(); if (!authentik_url_ok($cfg['issuer'])) { $message = 'Bitte zuerst eine gültige Issuer-Adresse speichern.'; $messageType = 'error'; } else { $d = authentik_discovery($cfg['issuer'], true); if ($d['ok']) { $message = 'Verbindung in Ordnung: authentik meldet den Aussteller „' . $d['doc']['issuer'] . '“ und die Anmelde-Adresse ' . $d['doc']['authorization_endpoint'] . '.'; } else { $message = $d['error']; $messageType = 'error'; } } } } $cfg = authentik_config(); $hasSecret = $cfg['client_secret'] !== ''; $ready = authentik_ready(); $redirect = authentik_redirect_uri(); ?>

authentik-Anmeldung

Zustand

✓ Eingeschaltet. Auf der Anmeldeseite des Mitarbeiterbereichs erscheint der Knopf „“. Eingeschaltet, aber unvollständig. Issuer-Adresse, Client-ID und Geheimnis müssen eingetragen sein. Ausgeschaltet. Der Knopf erscheint erst nach dem Einschalten.

Angemeldet wird nur, wer in authentik bestätigt ist und in DeskHub ein aktives Mitarbeiterkonto hat, das mit seinem authentik-Konto verknüpft ist (oder dieselbe E-Mail-Adresse hat). Konten werden nicht automatisch angelegt. E-Mail und Passwort funktionieren weiter. Die zweite Stufe (Authenticator-Code) von DeskHub entfällt bei dieser Anmeldung: Dafür sorgt authentik.

Kunden-Anmeldung

✓ Der Knopf erscheint auf der Anmeldeseite des Kundenportals.Der Knopf erscheint dort noch nicht.

Verbindung zu authentik

Kunden (Ticketersteller)

Beschriftung

Verbindung testen

Ruft die Konfiguration von authentik ab (ohne Anmeldung). Vorher speichern.

Verknüpfte Konten ()

Noch kein Mitarbeiter hat sein Konto verknüpft. Mitarbeiter tun das selbst unter „Mein authentik-Konto“; bei der ersten Anmeldung über die E-Mail-Adresse geschieht es automatisch.

MitarbeiterE-Mail in DeskHubE-Mail in authentikSeit

Einrichtung in authentik

  1. In authentik unter Anwendungen → Provider einen Provider vom Typ OAuth2/OpenID anlegen. Client-Typ: vertraulich (Confidential).
  2. Umleitungs-URI (Redirect URI) genau so eintragen (Modus „Strict“):
  3. Bereiche: mindestens openid, email und profile. Für die Gruppenprüfung zusätzlich den Bereich, der groups liefert (in authentik: Bereichs-Zuordnung „groups“).
  4. Eine Anwendung mit diesem Provider anlegen und bestimmen, wer sie nutzen darf (authentik prüft das selbst).
  5. Client-ID und Client-Geheimnis hier eintragen. Die Issuer-Adresse steht beim Provider unter „OpenID-Konfigurations-Aussteller“, sie sieht so aus: https://auth.example.de/application/o/<Anwendungs-Kürzel>/.
  6. Jeder Mitarbeiter hat sein DeskHub-Konto und verknüpft es einmal selbst unter Mein authentik-Konto. Alternativ klappt die erste Anmeldung auch, wenn die E-Mail-Adresse in authentik und DeskHub gleich ist (dann wird automatisch verknüpft).

Sicherheit: Der Ablauf nutzt PKCE, einen Zustandswert und eine Nonce; Aussteller, Zielgruppe und Ablauf des ID-Tokens werden geprüft. Das Token kommt direkt von authentik über eine geprüfte HTTPS-Verbindung. Das Geheimnis liegt verschlüsselt in der Datenbank. Fällt authentik aus, melden sich Mitarbeiter weiter mit E-Mail und Passwort an. Jede Anmeldung steht im Admin-Protokoll.