Невозможно зарегистрироваться с помощью Keycloak через Cypress - PullRequest
0 голосов
/ 11 января 2019

В моем приложении управление пользователями осуществляется через Keycloak . Во время тестирования моего приложения сквозным Cypress я столкнулся с проблемой. Когда я регистрирую пользователя, он выдает следующую ошибку:

Приносим извинения. Произошла ошибка, пожалуйста, войдите снова через ваше приложение .

Cypress добавляет что-то к сгенерированному URL после того, как я нажимаю кнопку отправки, что вызывает эту проблему. Тот же сценарий, проверенный на Транспортире , работал нормально. Я заметил, что Cypress добавляет session_code к URL запроса. При ручном тестировании я не получаю session_code.

Ниже приведен URL-адрес, созданный с помощью Cypress:

.../login-actions/registration?session_code=LsZbmsVVLwEH9s-xwFJ2JdDtaCu1_xzqAGOQCpjxGJI&execution=06fac3bb-fb19-474b-8659-2572586ae371&client_id=web_app&tab_id=PSlmfgdv0ls

Где URL-адрес, созданный вручную, выглядит следующим образом:

.../login-actions/registration?client_id=web_app&tab_id=PSlmfgdv0ls

Бэкэнд моего приложения Spring Boot , а внешний интерфейс в React и Next.js .

Было бы очень полезно, если бы кто-нибудь мог направить нас через эту проблему. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация о нашем приложении.

1 Ответ

0 голосов
/ 11 января 2019

Документация Keycloak Authenticator объясняет, что метод authenticate проверяет текущий HTTP-запрос, чтобы определить, были ли выполнены требования аутентификации, и, если нет, ответ на запрос отправляется обратно. Если ответ на запрос сам по себе является аутентификацией, вы увидите URL с параметром session_code.

Далее говорится, что session_code в первом примере URL-адреса относится к коду, сгенерированному из AuthenticationFlowContext.generateAccessCode () , что дополнительно объясняет:

String generateAccessCode ()

Генерирует код доступа и обновляет clientsession метка времени. Коды доступа должны быть включены в обратные вызовы действий формы в качестве параметра запроса.

Однако созданный вручную URL-адрес, который не включает параметр session_code, по-видимому, указывает на то, что первоначальная регистрация клиента прошла успешно, и конечная точка конфигурации клиента используется для выполнения запроса GET - клиент читает запрос - и все хорошо. Все отлично работает.

Поэтому кажется, что Cypress отправляется ответ на запрос ( и потенциально может выявить уязвимость в вашем приложении ). Возможные причины этого могут быть дополнительно объяснены в документации Cypress по Web Security .

Обычные обходные пути может предоставить вам лекарство или, если ничего не помогает, вы можете попробовать Отключение Web Security также для целей тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...