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(); ?>✓ Eingeschaltet. Auf der Anmeldeseite des Mitarbeiterbereichs erscheint der Knopf „= e($cfg['label']) ?>“. 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.
✓ Der Knopf erscheint auf der Anmeldeseite des Kundenportals.Der Knopf erscheint dort noch nicht.
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.
| Mitarbeiter | E-Mail in DeskHub | E-Mail in authentik | Seit | |
|---|---|---|---|---|
| = e($l['name']) ?> | = e($l['staff_email']) ?> | = e($l['email']) ?> | = e(format_dt($l['at'])) ?> |
= e($redirect) ?>openid, email und profile. Für die Gruppenprüfung zusätzlich den Bereich, der groups liefert (in authentik: Bereichs-Zuordnung „groups“).https://auth.example.de/application/o/<Anwendungs-Kürzel>/.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.