Невозможно аутентифицировать логин пользователя приложения с помощью KeyCloak

Я работаю над интеграцией приложения React с KeyCloak. Я установил сервер keycloak версии 11.0.2 на свой локальный компьютер. Я могу получить доступ к учетной записи администратора и создать пользователя с правами администратора. Я также создал настраиваемого клиента и пользователя с учетными данными с помощью keycloak. Мое приложение для реагирования размещено на порту 9000 моей машины, а keycloak - на порту 8080 (по умолчанию). Теперь, когда я перенаправляюсь на свой URL-адрес приложения, он автоматически перенаправляется на следующий URL-адрес:

http: // localhost: 8080 / auth / realms / {Custom_realm} / protocol / openid-connect / auth? client_id = {Custom_Client} & redirect_uri = http% 3A% 2F% 2Flocalhost% 3A9000% 2F & state = r8yy83fdgd-27f8-4aa9-a679 -01sfdsgd9 & response_mode = фрагмент & response_type = code & scope = openid & nonce = 27fedfgf89-66be-4484-bbcc-aabb4saddc4

введите описание изображения здесь URL отображает страницу входа без CSS. Не уверен, почему CSS не отображается. Также он не аутентифицируется и не выдает ошибку

Невозможно выполнить POST / realms / {Realm} / login-actions / аутентифицировать


person knowledge20    schedule 01.10.2020    source источник


Ответы (1)


Keycloak перенаправляет на страницу входа, потому что URL-адрес приложения keycloak проверяет, вошел ли пользователь в систему перед перенаправлением в приложение.

Чтобы отладить рендеринг вашей страницы входа без CSS, необходимо знать, какие изменения вы внесли в настройку темы этой области из папки тем администратора и сервера, потому что по умолчанию keycloak 11.0.2 отображается с помощью CSS.

Пытался нажать POST / аутентифицироваться от почтальона и браузера, он работает для меня.

Аутентифицировать рабочий CURL REQUEST:

curl --location --request POST 'http://localhost:8080/auth/realms/test/login-actions/authenticate?session_code=pmE8VZtaYo4u5IN7vOQ_OLh9Ft_n-pftbBqzk9T2z-k&execution=7d28dd8f-6436-4280-a1da-51cbca5084c1&client_id=account&tab_id=hdEKLv2DNPg' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Cookie: AUTH_SESSION_ID_LEGACY=16e87095-05df-4ca2-88c6-e0c7e2cf6199.milan-latitude-e5450; KEYCLOAK_SESSION_LEGACY=test/0805f781-d0e3-42cf-b34c-be110547d48c/16e87095-05df-4ca2-88c6-e0c7e2cf6199; KEYCLOAK_IDENTITY_LEGACY=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI5YmMwNGZkOS1kZDQ3LTRhZmUtOWM1NC0wZWQ1NGFmMmU1MWIifQ.eyJleHAiOjE2MDE1NjYxMjksImlhdCI6MTYwMTUzMDEyOSwianRpIjoiYmJmNmE4ZmQtYzBjMi00MWQxLWJkMGEtY2MwZmVmNmViMzYxIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL3Rlc3QiLCJzdWIiOiIwODA1Zjc4MS1kMGUzLTQyY2YtYjM0Yy1iZTExMDU0N2Q0OGMiLCJ0eXAiOiJTZXJpYWxpemVkLUlEIiwic2Vzc2lvbl9zdGF0ZSI6IjE2ZTg3MDk1LTA1ZGYtNGNhMi04OGM2LWUwYzdlMmNmNjE5OSIsInN0YXRlX2NoZWNrZXIiOiIxV0pWUUN5cDRfcEJJQzZpNENRWnZKMzk2aFBhREdoYmNjWXlDT3VTUm13In0.bteyEEAhIWzbi2MdJAwp9ndCXsTPtjHiGBtMYUglWR0; oauth2_authentication_csrf_insecure=MTYwMDc3ODA2MnxEdi1CQkFFQ180SUFBUkFCRUFBQVB2LUNBQUVHYzNSeWFXNW5EQVlBQkdOemNtWUdjM1J5YVc1bkRDSUFJRFZoTlRaaU1qWTJZVEF6TWpRMk1HUmhaV0pqWWpJNU5UbGtOekl5TURRMXwGvq0FY6TUmmWfUmzaDwnTBf9KC-1Ni5N5pc4IXVcBIQ==; oauth2_consent_csrf_insecure=MTYwMDc3ODIzNXxEdi1CQkFFQ180SUFBUkFCRUFBQVB2LUNBQUVHYzNSeWFXNW5EQVlBQkdOemNtWUdjM1J5YVc1bkRDSUFJRGt3T0RCaVlXSTFZVFJqTVRSbE5HTTVaREUxWldZMFptTTVaREl5TUdNeXxmdLHoVF_3zSxhHR8F2zez-Q37wde7ZnPkb_wt_o-T9g==' \ --data-urlencode 'username=milan' \ --data-urlencode 'password=password'

person Milan Shah    schedule 01.10.2020
comment
Спасибо Милану за вклад. Но я использую тему по умолчанию - keycloak css. Фактически, когда тема не рендерилась, я выбрал тему Keycloak из основной области и пользовательской области. - person knowledge20; 01.10.2020
comment
Не могли бы вы упомянуть этапы установки вашего keycloak 11.0.2, области и создания пользователя для восстановления проблемы в моем локальном keycloak. - person Milan Shah; 01.10.2020
comment
Конечно.1) Я установил сервер keycloack с помощью keycloak.org/downloads.html и загрузил серверный Zip версия sha1. Затем я запустил standalone.bat поверх командной строки, чтобы запустить сервер keycloak по URL-адресу localhost: 8080. 2) Я щелкнул административную консоль и создал пользователя-администратора с учетными данными. 3) Затем я вошел в систему с правами администратора. 4) Это привело меня к localhost: 8080 / auth / admin / master / console / # / realms / master 5) Затем я создал область с именем UI_Realm и клиентский UI_Client 6) Корневой URL: lhttp: // localhost: 9000 - person knowledge20; 01.10.2020
comment
7) Действительный URI перенаправления: localhost: 9000 * 8) веб-источник: * 9) созданный пользователь: указав имя пользователя 10 ) пользователь включен: включен 11) на вкладке учетных данных: предоставил учетные данные, временно отключив 12) Теперь я пытаюсь перейти по URL-адресу приложения localhost: 9000 - person knowledge20; 01.10.2020
comment
Можете ли вы войти в keycloak UI_Realm, используя этот URL-адрес localhost: 8080 / auth / realms / UI_Realm / аккаунт? - person Milan Shah; 01.10.2020
comment
Нет. Не удается получить / realms / UI_Realm / protocol / openid-connect / auth - person knowledge20; 01.10.2020
comment
Поскольку вы не можете войти в систему с помощью localhost: 8080 / auth / realms / UI_Realm / account что-то не так с установкой keycloak. Я не могу воспроизвести проблему по вашим шагам. Упоминание шагов для установки keycloak в Linux (поскольку у меня нет компьютера с Windows): 1. Скачал сервер keycloak 11.0.2 zip sha1 с keycloak.org/downloads.html. 2. Разархивируйте файл с помощью cmd: unzip keycloak-11.0.2.zip 3. Чтобы запустить сервер, перейдите в каталог keycloak-11.0.2 в команде запуска bin / standalone.sh 4. Создан пользователь с правами администратора и вошел в систему с помощью администратора. 5. Создано имя области UI_Realm. - person Milan Shah; 01.10.2020
comment
Вы явно используете какой-либо токен аутентификации? Шаги, которые вы указали до UI_Realm, аналогичны шагам, которые я выполнил - person knowledge20; 01.10.2020
comment
6. При входе в систему с правами администратора переключитесь на UI_realm в раскрывающемся списке слева вверху. 7. Созданный пользователь по логину. 8. На вкладке кредит: установите кредит, временно отключив его. 9. Перейдите на вкладку клиентов: щелкните базовый URL рядом с учетной записью. 10. Теперь отображается экран входа в систему с помощью CSS. 11. Вы вошли в систему, используя имя пользователя и пароль (созданные на шагах 7 и 8). - person Milan Shah; 01.10.2020
comment
Нет, я явно не использую токен аутентификации. Настраивается только так, как указано до шага 11. Ваша основная учетная запись для входа в UI_Realm необходима для работы перед настройкой любого клиента (приложение React). - person Milan Shah; 01.10.2020
comment
Какое значение вы устанавливаете для базового URL-адреса? как часть шага 9, перейдя на вкладку клиентов. Это URL-адрес приложения? или ключевой URL-адрес плаща - person knowledge20; 01.10.2020
comment
Это URL-адрес keycloak. Я не устанавливаю никакого значения базового URL. Это конфигурация клиента по умолчанию, созданная keycloak при создании новой области. Только одно предложение, если у вас нет требований к разработке keycloak и вы знакомы с докером, тогда используйте образ докера keycloak. Нет необходимости отлаживать установку keycloak в вашей среде. Образ Docker Keycloak от redhat: hub.docker.com/r/jboss/keycloak - person Milan Shah; 01.10.2020
comment
Привет, Милан, я могу просмотреть учетную запись, используя URL-адрес localhost: 8080 / auth / realms / UI_Realm / account. CSS заполняется для всплывающего окна входа пользователя при нажатии URL-адреса приложения. Однако выдает ошибку. Недопустимый параметр: redirect_uri. Вы установили какой-либо uri перенаправления в созданном вами клиенте? - person knowledge20; 01.10.2020
comment
В действительном поле uri перенаправления вашего клиентского приложения для реагирования в keycloak вам необходимо добавить uri вашего приложения для реагирования, на которое необходимо выполнить перенаправление. - person Milan Shah; 01.10.2020
comment
Милан, как вы справились с выходом из приложения? какой URL вы использовали для выхода из приложения. - person knowledge20; 01.10.2020
comment
Я занимался разработкой keycloak не в приложении. Сначала дайте мне знать, какой протокол (SAML / OAUTH / OPENID) использует ваше приложение, чтобы на его основе я мог помочь вам с выходом из системы. - person Milan Shah; 01.10.2020