Якщо ви отримуєте цю помилку через нове царство, яке ви створили
У URL-адресі, на яку ви переспрямовані (можливо, вам доведеться шукати в інструментах розробника Chrome для цієї URL-адреси), змініть область з master
тієї, яку ви щойно створили, а якщо ви не використовуєте https
, переконайтеся, що також використовується redirect_uri http
.
Якщо ви отримуєте цю помилку, оскільки намагаєтеся встановити Keycloak у загальнодоступному домені (не на localhost)
Крок 1)
Дотримуйтесь цієї документації, щоб налаштувати базу даних MySql. Можливо, вам також доведеться звернутися до офіційної документації .
Крок 2)
Запустіть командуupdate REALM set ssl_required = 'NONE' where id = 'master';
Примітка:
На даний момент ви технічно повинні мати можливість входу, але версія 4.0 Keycloak використовує https для перенаправлення uri, хоча ми щойно вимкнули підтримку https. Поки Keycloak цього не виправить, ми можемо обійти це за допомогою зворотного проксі-сервера. Зворотний проксі - це те, що ми все одно хочемо використовувати для легкого створення сертифікатів SSL / TLS, не турбуючись про сховища ключів Java.
Примітка 2. З того часу 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 так, щоб він вимагався лише для зовнішніх запитів, але це, здається, не спрацювало, саме тому ми встановили для https значення none на кроці 2. Відтепер ми будемо продовжувати використовувати http через тунель SSH для управління налаштуваннями адміністратора.
Крок 6)
Всякий раз, коли ви намагаєтесь відвідати сайт через https, ви запускаєте політику HSTS, яка автоматично примушує http-запити перенаправляти на https. Дотримуйтесь цих вказівок, щоб очистити правило HSTS від Chrome , а потім поки що більше не відвідувати https-версію сайту.
Крок 7)
Налаштування Apache. Спочатку знайдіть, де знаходиться ваш файл httpd.conf . Ваш файл httpd.conf, ймовірно, містить конфігураційні файли з окремого каталогу. У моєму випадку я знайшов весь конфігураційний файл у conf.d
каталозі, який знаходиться поруч із папкою, в якій знаходився файл httpd.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 на сервері маски, або за допомогою 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) Не питайте мене, скільки часу знадобилося мені, щоб зрозуміти все це.