Если вы получаете эту ошибку из-за созданного вами нового мира
В URL-адресе, на который вы перенаправлены (возможно, вам придется поискать этот URL-адрес в инструментах разработчика Chrome), измените область с master
той, которую вы только что создали, и, если вы не используете https
, убедитесь, что redirect_uri также использует http
.
Если вы получаете эту ошибку, потому что пытаетесь настроить Keycloak в общедоступном домене (не локальном хосте)
Шаг 1)
Следуйте этой документации, чтобы настроить базу данных MySql. Вам также может потребоваться обратиться к официальной документации .
Шаг 2)
Запустите командуupdate REALM set ssl_required = 'NONE' where id = 'master';
Примечание.
На этом этапе технически вы можете войти в систему, но Keycloak версии 4.0 использует https для uri перенаправления, хотя мы только что отключили поддержку https. Пока Keycloak не исправит это, мы можем обойти это с помощью обратного прокси. Обратный прокси-сервер - это то, что мы захотим использовать в любом случае, чтобы легко создавать сертификаты SSL / TLS, не беспокоясь о хранилищах ключей Java.
Примечание 2: Keycloak с тех пор выпустил собственный прокси. Я еще не пробовал это сделать, но на этом этапе вы можете перестать следовать моим указаниям и проверить (привратник keycloak) [ https://www.keycloak.org/downloads.html] . Если у вас возникнут проблемы с настройкой Keycloak Gatekeeper, я сохраню свои инструкции по настройке обратного прокси с Apache.
Шаг 3) Установите Apache. Мы будем использовать Apache в качестве обратного прокси (я пробовал NGINX, но у NGINX были некоторые ограничения, которые мешали). Посмотрите, как yum устанавливает Apache (CentOs 7) и apt-get install Apache (Ubuntu 16), или найдите инструкции для вашего конкретного дистрибутива.
Шаг 4) Запустите Apache
Используйте sudo systemctl start httpd
(CentOs) или sudo systemctl start apache2
(Ubuntu)
Используйте sudo systemctl status httpd
(CentOs) или sudo systemctl status apache2
(Ubuntu), чтобы проверить, работает ли Apache. Если вы видите текст зеленого цвета active (running)
или если читается последняя запись, Started The Apache HTTP Server.
то все в порядке.
Шаг 5) Мы установим SSL-соединение с обратным прокси-сервером, а затем обратный прокси будет взаимодействовать с keyCloak через http. Поскольку это http-соединение происходит на одном компьютере, вы все еще в безопасности. Мы можем использовать Certbot для настройки автоматического обновления сертификатов.
Если этого типа шифрования недостаточно, а ваша политика безопасности требует сквозного шифрования, вам придется выяснить, как настроить SSL через WildFly вместо использования обратного прокси.
Примечание:
я никогда не мог заставить https правильно работать с порталом администратора. Возможно, это просто ошибка в бета-версии Keycloak 4.0, которую я использую. Предполагается, что вы можете установить уровень SSL так, чтобы он требовался только для внешних запросов, но это, похоже, не сработало, поэтому на шаге 2 мы установили для https значение none. С этого момента мы продолжим использовать http через туннель SSH для управления настройками администратора.
Шаг 6)
Всякий раз, когда вы пытаетесь посетить сайт через https, вы запускаете политику HSTS, которая автоматически заставляет HTTP-запросы перенаправлять на https. Следуйте этим инструкциям, чтобы удалить правило HSTS из Chrome , а затем пока больше не посещайте https-версию сайта.
Шаг 7)
Настройте Apache. Сначала найдите, где находится ваш файл httpd.conf . Ваш файл httpd.conf, вероятно, включает файлы конфигурации из отдельного каталога. В моем случае я нашел весь свой файл конфигурации в conf.d
каталоге, расположенном рядом с папкой, в которой находился файл httpd.conf.
Как только вы найдете свои файлы conf, измените или добавьте следующие записи виртуального хоста в свои файлы conf. Убедитесь, что вы не переопределяете уже существующие параметры SSL, созданные certbot. Когда закончите, ваш файл конфигурации должен выглядеть примерно так.
<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>
Шаг 8) Перезагрузите Apache. Используйте sudo systemctl restart httpd
(CentOs) или sudo systemctl restart apache2
(Ubuntu).
Шаг 9)
Прежде чем у вас будет возможность попытаться войти на сервер, поскольку мы сказали Keycloak использовать http, нам необходимо настроить другой метод безопасного подключения. Это можно сделать, установив VPN-сервис на сервере Keycloak или используя SOCKS. Я использовал прокси SOCKS. Для этого вам сначала нужно настроить динамическую переадресацию портов.
ssh -N -D 9905 user@example.com
Или настроить через Putty .
Весь трафик, отправляемый на порт 9905, теперь будет безопасно маршрутизироваться через туннель SSH на ваш сервер. Убедитесь, что вы занесли в белый список порт 9905 на брандмауэре вашего сервера.
После настройки динамической переадресации портов вам необходимо настроить свой браузер для использования прокси-сервера SOCKS на порту 9905. Инструкции здесь .
Шаг 10) Теперь вы можете войти на портал администратора Keycloak. Для подключения к веб-сайту перейдите по адресу http://127.0.0.1 , и прокси-сервер SOCKS перенесет вас в консоль администратора. Убедитесь, что вы отключили прокси-сервер SOCKS, когда закончите, так как он использует ресурсы вашего сервера и приведет к снижению скорости интернета для вас, если его оставить.
Шаг 11) Не спрашивайте меня, сколько времени мне потребовалось, чтобы разобраться во всем этом.