从 Keycloak 帐户页面注销时更改 redirect_uri
Change redirect_uri when logout from Keycloak account page
当用户从 Keycloak 帐户管理 页面 http://localhost:8080/auth/realms/MY_REALM/account/ 注销时,我们试图将用户重定向到 http://destionation.com/home(屏幕截图):
但是,它总是在注销后重定向到 http://localhost:8080/auth/realms/KLARA/account/。有什么官方方法可以改变 redirect_uri
?
谢谢!
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
我们遇到了同样的问题。我们有一个 link 从 Angular 应用程序到 Keycloak 帐户页面。更改密码后,用户可以单击注销,但 redirect_uri 指向同一帐户页面。因此,登录后,用户再次被重定向到帐户页面并陷入循环。我的解决方案如下。
从 Angular 或任何应用发送重定向 URI:
{URL to account page of Keycloak} + '?redirectUri=' + {path to the Home page my app}
然后在 Keycloak 主题中 account/password.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 中添加了一个 doBack 标签并在 Save 旁边添加了一个 Back 按钮:
<button id="backButton" type="button" class="${properties.kcButtonClass!}${properties.kcButtonDefaultClass!}${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doBack")}</button>
当用户从 Keycloak 帐户管理 页面 http://localhost:8080/auth/realms/MY_REALM/account/ 注销时,我们试图将用户重定向到 http://destionation.com/home(屏幕截图):
但是,它总是在注销后重定向到 http://localhost:8080/auth/realms/KLARA/account/。有什么官方方法可以改变 redirect_uri
?
谢谢!
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
我们遇到了同样的问题。我们有一个 link 从 Angular 应用程序到 Keycloak 帐户页面。更改密码后,用户可以单击注销,但 redirect_uri 指向同一帐户页面。因此,登录后,用户再次被重定向到帐户页面并陷入循环。我的解决方案如下。
从 Angular 或任何应用发送重定向 URI:
{URL to account page of Keycloak} + '?redirectUri=' + {path to the Home page my app}
然后在 Keycloak 主题中 account/password.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 中添加了一个 doBack 标签并在 Save 旁边添加了一个 Back 按钮:
<button id="backButton" type="button" class="${properties.kcButtonClass!}${properties.kcButtonDefaultClass!}${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doBack")}</button>