Wie bereinige ich eine fehlerhafte Content Security Policy in Keycloak?
Komponente | Keycloak |
---|---|
Version | 15 |
Erstellt am |
|
Zuletzt geändert am | Tue, 06 May 2025 14:56:36 GMT |
Reviewstatus | Review |
KB-Artikelnummer | 1279098887 |
Zusammenfassung
Sie haben Keycloak so konfiguriert, dass andere Webseiten Keycloak einbinden können (Content Security Policy, CSP) und ist etwas schief gegangen.
Die Webseite bleibt einfach weiß und in der Browserkonsole finden sich Hinweise wie “The source list for the Content Security Policy directive 'frame-src' contains an invalid source” oder “Refused to frame <frame url> because it violates the following Content Security Policy directive: <directive>”.
Wichtige Voraussetzungen
Administrativer Keycloak-Benutzer
SSH-Benutzer mit Zugriff auf MicroK8s
Grundlegendes Verständnis von Kubernetes
Grundlegendes Verständnis von MySQL-Datenbanken
Lösung
Bei einer fehlerhaften Konfiguration der Content Security Policy (CSP) wird der ungültige Wert auch für die Administrationsoberfläche von Keycloak angewendet. Daher können Sie diesen ungültigen Wert nicht mehr über die Oberfläche korrigieren.
Sie können die fehlerhafte Konfiguration nur noch über die Datenbank von Keycloak beheben.
Stellen Sie die Keycloak-MySQL-Datenbank in phpMyAdmin bereit und ändern Sie den Wert.
So geht's
Melden Sie sich via SSH am betroffenen Server an.
Bearbeiten Sie das Deployment von phpmyadmin. Ergänzen Sie unter der Umgebungsvariable PMA_HOSTS den Service keycloak-mysql.default. Die einzelnen Hostnames werden kommasepariert ohne Leerzeichen gespeichert.
CODEkubectl edit deployment -n phpmyadmin phpmyadmin-deploy
Rufen Sie das Kennwort vom Benutzer root der Keycloak-Datenbankinstanz ab. Das Kennwort finden Sie über die ConfigMap keycloak-mysql-passwords.
CODEkubectl describe cm -n default keycloak-mysql-passwords
Öffnen Sie in einem Webbrowser phpMyAdmin unter https://<server>/pma. PhpMyAdmin liegt hinter einer Keycloak-Authentifizierung, melden Sie sich dementsprechend an. Geben Sie Benutzer und Passwort an und wählen den Keycloak-MySQL-Server unter Serverauswahl aus.
Finden Sie den Wert für die Content Security Policy in der Tabelle REALM_ATTRIBUTE in der Datenbank keycloak. Dazu gibt es eine Zeile mit dem Attributnamen _browser_header.contentSecurityPolicy.
Passen Sie den Wert entsprechend an.
Starten Sie den Pod von Keycloak neu, damit die Änderungen angewendet werden:
CODEkubectl delete pod -n default $(kubectl get pods -n default --no-headers -o custom-columns=":metadata.name"|grep keycloak-deploy)
Prüfen Sie unbedingt, ob die Änderungen den gewünschten Erfolg bringen.
Entfernen Sie den Service keycloak-mysql.default aus dem Deployment von phpmyadmin.
CODEkubectl edit deployment -n phpmyadmin phpmyadmin-deploy