#keycloak
#keycloak
Вопрос:
Мы пытаемся перенаправить пользователей на http://destionation.com/home когда они выходят из системы со страницы управления учетной записью Keycloak http://localhost:8080/auth/realms/MY_REALM/account / (скриншот):
Однако он всегда перенаправляет на http://localhost:8080/auth/realms/KLARA/account / после выхода из системы. Есть ли какой-либо официальный способ изменить это redirect_uri
?
Спасибо!
Ответ №1:
У нас была та же проблема. У нас была ссылка из приложения Angular на страницу учетной записи Keycloak. После смены пароля пользователь мог нажать выход, но redirect_uri указывал на ту же страницу учетной записи. Следовательно, после входа в систему пользователь снова был перенаправлен на страницу учетной записи и застрял в цикле. Мое решение было следующим.
Отправьте URI перенаправления из Angular или любого приложения:
{URL to account page of Keycloak} '?redirectUri=' {path to the Home page my app}
Затем в темах Keycloak учетная запись / пароль.ftl добавил следующий javascript сверху:
<script>
var redirectUri;
window.onload = function() {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
redirectUri = urlParams.get('redirectUri')
document.getElementById( "backButton" ).setAttribute( "onClick", "javascript:goBack();" );
};
var goBack = function() {
window.location.replace(redirectUri);
}
</script>
Наконец-то добавлена метка возврата в message.properties и кнопка «Назад» рядом с сохранением:
<button id="backButton" type="button" class="${properties.kcButtonClass!}${properties.kcButtonDefaultClass!}${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doBack")}</button>
Ответ №2:
logoutUrl создается на основе URL-адреса базового сервера (здесь: http://localhost:8080/auth ) :
config.setLogoutEndpoint(frontendUriBuilder.clone().path(OIDCLoginProtocolService.class, "logout").build(realm.getName(), OIDCLoginProtocol.LOGIN_PROTOCOL).toString());
Вы не можете настроить конкретный URL-адрес для конечной точки выхода из системы в управлении учетными записями.
Но вы можете легко создать пользовательскую тему и переопределить значение logoutUrl : https://www.keycloak.org/docs/latest/server_development/index.html#_themes