Keycloak - Microsoft Edge предотвращает успешную аутентификацию с помощью 'keycloak-connect' - PullRequest
0 голосов
/ 02 октября 2018

При использовании адаптера Node.js keycloak-connect для защиты ресурса браузер Microsoft Edge (v42 +, Windows 10) предотвращает успешную аутентификацию.

Это может быть последовательно реплицировано (но не ограничиваясь этим) следующие версии сервера Keycloak и обе соответствующие версии клиентского и серверного адаптеров:

  • 3.4.3
  • 4.0.0
  • 4.3.0
  • 4.5.0

Что происходит?

Перед перенаправлением пользователя со страницы аутентификации и после успешного входа-в обратном вызове успешного входа в систему создается дважды.Этот второй обратный вызов возвращает неверный запрос «400» перед началом перенаправления.

Для репликации:

  1. Откройте Microsoft Edge
  2. ОткройтеИнструменты разработчика> вкладка «Сеть» и убедитесь, что журналы не очищаются при навигации.
  3. Посетите любую страницу, защищенную Keycloak, без существующего / активного сеанса аутентификации с браузером Microsoft Edge.
  4. Введите свои учетные данные иlogin.
  5. Перед перенаправлением вы увидите ошибку.

Обычно это не вызывает серьезных проблем с библиотекой keycloak-js на стороне клиента.Но с любой ванильной или нестандартной реализацией адаптера узла мы стараемся, потому что аутентификация прошла успешно, и происходит перенаправление, веб-ресурсы загрузятся, но сразу же произойдет обратный вызов в третий раз, что даст 403.

Затем он оставляет пользователя в состоянии полу-аутентификации и означает, что сервер Node.JS не имеет доступа к объекту kauth.grant, поэтому последующие защищенные запросы к API не имеют доступа к токену на стороне сервера.

Во время события сервер keycloak возвращает следующие журналы об этом событии:

WARN  [org.keycloak.services.managers.CodeGenerateUtil] (default task-17) Code '1122279c-b648-4ee5-b39e-9ea7b661126d' already used for userSession 'd1188910-d3f4-4dbc-bf06-ad96c2c96002' and client '934cb774-b345-477c-944a-b6b694f131e0'.

WARN  [org.keycloak.events] (default task-17) type=CODE_TO_TOKEN_ERROR, realmId=master, clientId=platform2, userId=null, ipAddress=172.18.0.1, error=invalid_code, grant_type=authorization_code, code_id=d1188910-d3f4-4dbc-bf06-ad96c2c96002, client_auth_method=client-secret

Я поднимаю это здесь в StackOverflow в соответствии с рекомендациями разработчика JBoss, поскольку технически это проблема Microsoft Edge.

Это невероятно важно, хотя, как я полагаю, гораздо больше людей, должно быть, сталкивается с чем-то связанным, и, к сожалению, Edge имеет большую долю рынка браузеров.

Любой совет будет принят с благодарностью!

...