Wenn Sie diesen Fehler aufgrund eines neuen Bereichs erhalten, den Sie erstellt haben
Ändern Sie in der URL, zu der Sie umgeleitet werden (möglicherweise müssen Sie in den Chrome-Entwicklungstools nach dieser URL suchen), den Bereich von master
dem gerade erstellten. Wenn Sie ihn nicht verwenden https
, stellen Sie sicher, dass redirect_uri auch verwendet wird http
.
Wenn Sie diesen Fehler erhalten, weil Sie versuchen, Keycloak auf einer öffentlich zugänglichen Domain (nicht localhost) einzurichten
Schritt 1)
Befolgen Sie diese Dokumentation, um eine MySQL-Datenbank einzurichten. Möglicherweise müssen Sie auch auf die offizielle Dokumentation verweisen .
Schritt 2)
Führen Sie den Befehl ausupdate REALM set ssl_required = 'NONE' where id = 'master';
Hinweis:
Zu diesem Zeitpunkt sollten Sie technisch in der Lage sein, sich anzumelden, aber Version 4.0 von Keycloak verwendet https für die Umleitungs-URL, obwohl wir gerade die https-Unterstützung deaktiviert haben. Bis Keycloak dies behebt, können wir dies mit einem Reverse-Proxy umgehen. Ein Reverse-Proxy ist etwas, das wir sowieso verwenden möchten, um auf einfache Weise SSL / TLS-Zertifikate zu erstellen, ohne sich um Java-Keystores kümmern zu müssen.
Anmerkung 2: Keycloak hat seitdem einen eigenen Proxy herausgebracht. Ich habe dies noch nicht versucht, aber an diesem Punkt möchten Sie möglicherweise aufhören, meinen Anweisungen zu folgen und nachsehen (Keycloak Gatekeeper) [ https://www.keycloak.org/downloads.html] . Wenn Sie Probleme beim Einrichten des Keycloak Gatekeepers haben, behalte ich meine Anweisungen zum Einrichten eines Reverse-Proxys mit Apache bei.
Schritt 3) Installieren Sie Apache. Wir werden Apache als Reverse-Proxy verwenden (ich habe NGINX ausprobiert, aber NGINX hatte einige Einschränkungen, die im Weg standen). Siehe yum Installation von Apache (CentOs 7) und apt-get install Apache (Ubuntu 16) oder Anweisungen für Ihre spezifische Distribution.
Schritt 4) Führen Sie Apache aus
Verwenden Sie sudo systemctl start httpd
(CentOs) oder sudo systemctl start apache2
(Ubuntu)
Verwenden Sie sudo systemctl status httpd
(CentOs) oder sudo systemctl status apache2
(Ubuntu), um zu überprüfen, ob Apache ausgeführt wird. Wenn Sie die Wörter in grünem Text sehen active (running)
oder wenn der letzte Eintrag lautet, sind Started The Apache HTTP Server.
Sie gut.
Schritt 5) Wir stellen eine SSL-Verbindung mit dem Reverse-Proxy her und dann kommuniziert der Reverse-Proxy über http mit keyCloak. Da diese http-Kommunikation auf demselben Computer stattfindet, sind Sie immer noch sicher. Wir können Certbot verwenden, um Zertifikate mit automatischer Verlängerung einzurichten .
Wenn diese Art der Verschlüsselung nicht gut genug ist und Ihre Sicherheitsrichtlinie eine End-to-End-Verschlüsselung erfordert, müssen Sie herausfinden, wie Sie SSL über WildFly einrichten , anstatt einen Reverse-Proxy zu verwenden.
Hinweis:
Ich konnte https nie dazu bringen, ordnungsgemäß mit dem Admin-Portal zu arbeiten. Vielleicht war dies nur ein Fehler in der Beta-Version von Keycloak 4.0, die ich verwende. Es wird angenommen, dass Sie die SSL-Stufe so einstellen können, dass sie nur für externe Anforderungen erforderlich ist. Dies schien jedoch nicht zu funktionieren. Aus diesem Grund haben wir in Schritt 2 https auf none gesetzt. Von hier an werden wir weiterhin http über einen SSH-Tunnel verwenden, um die Administratoreinstellungen zu verwalten.
Schritt 6)
Wenn Sie versuchen, die Site über https zu besuchen, lösen Sie eine HSTS-Richtlinie aus, die http-Anforderungen automatisch dazu zwingt, zu https umzuleiten. Befolgen Sie diese Anweisungen, um die HSTS-Regel in Chrome zu löschen , und besuchen Sie die https-Version der Website vorerst nicht erneut.
Schritt 7)
Konfigurieren Sie Apache. Suchen Sie zuerst, wo sich Ihre httpd.conf-Datei befindet . Ihre httpd.conf-Datei enthält wahrscheinlich Konfigurationsdateien aus einem separaten Verzeichnis. In meinem Fall habe ich meine gesamte Konfigurationsdatei in einem conf.d
Verzeichnis gefunden, das sich neben dem Ordner befindet, in dem sich die Datei httpd.conf befindet.
Wenn Sie Ihre Conf-Dateien gefunden haben, ändern Sie die folgenden virtuellen Host-Einträge oder fügen Sie sie in Ihre Conf-Dateien ein. Stellen Sie sicher, dass Sie die bereits vorhandenen SSL-Optionen, die von certbot generiert wurden, nicht überschreiben. Wenn Sie fertig sind, sollte Ihre Konfigurationsdatei ungefähr so aussehen.
<VirtualHost *:80>
RewriteEngine on
#change https redirect_uri parameters to http
RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
RewriteRule . %1redirect_uri=http%2 [NE,R=302]
#uncomment to force https
#does not currently work
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}
#forward the requests on to keycloak
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
RewriteEngine on
#Disable HSTS
Header set Strict-Transport-Security "max-age=0; includeSubDomains;" env=HTTPS
#change https redirect_uri parameters to http
RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
RewriteRule . %1redirect_uri=http%2 [NE,R=302]
#forward the requests on to keycloak
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
#Leave the items added by certbot alone
#There should be a ServerName option
#And a bunch of options to configure the location of the SSL cert files
#Along with an option to include an additional config file
</VirtualHost>
</IfModule>
Schritt 8) Starten Sie Apache neu. Verwenden Sie sudo systemctl restart httpd
(CentOs) oder sudo systemctl restart apache2
(Ubuntu).
Schritt 9)
Bevor Sie versuchen können, sich beim Server anzumelden, müssen Sie eine andere Methode für die sichere Verbindung einrichten, da wir Keycloak angewiesen haben, http zu verwenden. Dies kann entweder durch Installieren eines VPN-Dienstes auf dem Keycloak-Server oder durch Verwenden von SOCKS erfolgen. Ich habe einen SOCKS-Proxy verwendet. Dazu müssen Sie zunächst die dynamische Portweiterleitung einrichten.
ssh -N -D 9905 user@example.com
Oder richten Sie es über Putty ein .
Der gesamte an Port 9905 gesendete Datenverkehr wird nun sicher über einen SSH-Tunnel an Ihren Server weitergeleitet. Stellen Sie sicher, dass Sie Port 9905 auf der Firewall Ihres Servers auf die Whitelist setzen.
Sobald Sie die dynamische Portweiterleitung eingerichtet haben, müssen Sie Ihren Browser so einrichten , dass ein SOCKS-Proxy für Port 9905 verwendet wird. Anweisungen hier .
Schritt 10) Sie sollten sich jetzt beim Keycloak-Administratorportal anmelden können. Um eine Verbindung zur Website herzustellen , rufen Sie http://127.0.0.1 auf . Der SOCKS-Proxy führt Sie zur Administratorkonsole. Stellen Sie sicher, dass Sie den SOCKS-Proxy deaktivieren, wenn Sie fertig sind, da er die Ressourcen Ihres Servers nutzt. Wenn Sie diese Option beibehalten, wird die Internetgeschwindigkeit für Sie langsamer.
Schritt 11) Fragen Sie mich nicht, wie lange ich gebraucht habe, um das alles herauszufinden.