Как перенаправить keyclock на страницу приложения и получить токен

Я использую страницу входа и регистрации keycloak. Для входа я использую:

 keycloak.init({onLoad: 'login-required'}).then(function (authenticated) {
        if (!authenticated) {
           
        } else{

        }

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

htttps://localhost/auth/realms/realm1/login-actions/registration?session_code=2TC4xBE5BoFy_Dt7nK8wNDzdLx-8rJmA7l0IjTY1Khk&execution=2e64e3ef-185a-4ca8-a6cc-51c40f9fb7fc&client_id=bizmapp&tab_id=EbayK64spNk

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


person marcg    schedule 08.09.2020    source источник


Ответы (1)


В интерфейсе администрирования Keycloak перейдите в раздел «Аутентификация», затем во вкладку «Потоки». Выберите регистрацию в верхнем левом раскрывающемся списке, чтобы настроить процесс регистрации. Затем вы можете добавить действие перенаправления/обновления браузера в конце потока.

Дополнительную информацию можно найти на странице https://www.keycloak.org/docs/latest/server_admin/index.html#_authentication-flows

Передача токенов в качестве параметров запроса обычно считается плохой идеей, поскольку они остаются в истории браузера, а 1° может быть украден, если кто-то другой получит доступ к этому браузеру, а 2° могут быть переданы третьей стороне, например, когда вы используете такие вещи, как Google Analytics.

Ваше приложение должно иметь возможность определять, что пользователь аутентифицирован с помощью файла cookie Keycloak SSO (или любого другого механизма), который, я думаю, будет установлен автоматически после регистрации. Вам просто нужно полагаться на адаптер Keycloak, настроенный для вашего приложения.

person otonglet    schedule 09.09.2020
comment
Вы упомянули «Передача токенов в качестве параметров запроса...». Вы имеете в виду URL-адрес в моем сообщении? Я думаю, что это одноразовый код сеанса. Какие настройки необходимы, чтобы не передавать токены в качестве параметров запроса? Во-вторых, в JS-адаптере keycloak мы получаем токен и обновляем токены. Я сохраняю их в пользовательских файлах cookie. Разве это не рекомендуемый подход? Должен ли я использовать файлы cookie, созданные keycloak? Какой файл cookie keycloak имеет токен обновления? - person marcg; 14.09.2020
comment
Нет, я не говорю об URL-адресе, который вы указали в вопросе, я говорю об обратном вызове. Файлы cookie сервера HTTPS нельзя украсть (они не видны другим приложениям). Отправка вам обратно токена в ответе также хороша, но это не то, что Keycloak делает после регистрации. Как только вы настроите действие перенаправления браузера, о котором я упоминал, вы увидите, что Keycloak устанавливает файл cookie SSO после регистрации пользователя. Со страницы, на которую перенаправляется пользователь, вы можете получить свой токен доступа из keycloak.token и keycloak.refreshToken (это стандартная логика адаптера Keycloak). Дайте мне знать, если вам нужна дополнительная информация. - person otonglet; 14.09.2020
comment
Нет, я не говорю об URL-адресе, который вы указали в вопросе, я говорю об обратном вызове. Файлы cookie сервера HTTPS нельзя украсть (они не видны другим приложениям). Возвращать токен в ответе тоже нормально, но это не то, что Keycloak делает после регистрации. Вы можете просто настроить действие перенаправления браузера, о котором я упоминал. Вы увидите, что Keycloak устанавливает файл cookie SSO после регистрации пользователя. Со страницы, на которую перенаправляется пользователь, вы можете получить свой токен доступа из keycloak.token и keycloak.refreshToken (это стандартная логика адаптера Keycloak). Дайте мне знать, если вам нужна дополнительная информация. - person otonglet; 14.09.2020
comment
В моей установке с загрузкой ключей я не вижу возможности добавить действие в конце процесса регистрации. Я также хотел бы напрямую перенаправить на один из разрешенных URI обратного вызова клиентов после проверки электронной почты/профиля @otonglet - person philk; 04.03.2021
comment
Является ли браузер/перенаправление не в Http Challenge на вкладке потоков? в регистрации нет.. - person Grogu; 14.05.2021