首页 > 解决方案 > 如何在使用 Keycloak 注销大使 OAuth2 过滤器后指定 redirectUrl?

问题描述

我正在使用大使 OAuth2 过滤器对 Keycloak 执行 OAuth2 授权。对于注销,我使用大使文档中描述的 RP 发起 的注销注销工作正常。但是,我无法弄清楚如何提供 Keycloak 在成功注销后重定向到登录页面所需的重定向 url。结果,用户停留在 keycloak 的空白注销页面上。

RP 发起的注销如下所示

 const form = document.createElement('form');
    form.method = 'post';
    form.action = '/.ambassador/oauth2/logout?realm='+realm;
    const xsrfInput = document.createElement('input');
    xsrfInput.type = 'hidden';
    xsrfInput.name = '_xsrf';
    xsrfInput.value = getCookie("ambassador_xsrf."+realm);
    form.appendChild(xsrfInput);
    document.body.appendChild(form);
    form.submit();

我希望大使提供一种将重定向 url 添加为查询参数或其他内容的方法,但我找不到解决方案。有什么建议或解决方法吗?

标签: keycloakambassador

解决方案


我找到了一个解决方案,这不是最好的解决方案,但您将使用按钮注销。

async function logout() {
const data = new URLSearchParams("realm=keycloak-oauth2-filter.ambassador")
data.append('_xsrf', getCookie("ambassador_xsrf.keycloak-oauth2-filter.ambassador"));
fetch('/.ambassador/oauth2/logout', {
  method: 'POST',
  body: data
})
  .then(function (response) {
    if (response.ok) {
      return response.text()
    } else {
      throw "err";
    }
  })
  .then(function (text) {
    console.log(text);
  })
  .catch(function (err) {
    console.log(err);
  });

}


推荐阅读