Skip to main content
Skip table of contents

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

  1. Melden Sie sich via SSH am betroffenen Server an.

  2. 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.

    CODE
    kubectl edit deployment -n phpmyadmin phpmyadmin-deploy
  3. Rufen Sie das Kennwort vom Benutzer root der Keycloak-Datenbankinstanz ab. Das Kennwort finden Sie über die ConfigMap keycloak-mysql-passwords.

    CODE
    kubectl describe cm -n default keycloak-mysql-passwords
  4. Ö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.

  5. 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.

  6. Passen Sie den Wert entsprechend an.

  7. Starten Sie den Pod von Keycloak neu, damit die Änderungen angewendet werden:

    CODE
    kubectl delete pod -n default $(kubectl get pods -n default --no-headers -o custom-columns=":metadata.name"|grep keycloak-deploy)
  8. Prüfen Sie unbedingt, ob die Änderungen den gewünschten Erfolg bringen.

  9. Entfernen Sie den Service keycloak-mysql.default aus dem Deployment von phpmyadmin.

    CODE
    kubectl edit deployment -n phpmyadmin phpmyadmin-deploy

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.