Wildfly 管理控制台的 Keycloak 22 上仅承载身份验证

问题描述 投票:0回答:1

我们有一个 WildFly 26 的工作设置,其中 HAL(管理控制台)通过 Keycloak 16 进行保护。

我们使用的是 KC 适配器,而不是 WF 原生 OIDC 适配器。

现在我们正在尝试将 KC 升级到 22,但 KC 放弃了对仅承载客户端的支持。

对管理接口的请求返回401状态码,WF上的日志如下:

DEBUG [org.keycloak.adapters.PreAuthActionsHandler] (management task-3) adminRequest http://localhost:9990/management
TRACE [org.keycloak.adapters.RequestAuthenticator] (management task-3) --> authenticate()
TRACE [org.keycloak.adapters.RequestAuthenticator] (management task-3) try bearer
DEBUG [org.keycloak.adapters.BearerTokenRequestAuthenticator] (management task-3) Authorization header not present
TRACE [org.keycloak.adapters.RequestAuthenticator] (management task-3) try query parameter auth
DEBUG [org.keycloak.adapters.QueryParameterTokenRequestAuthenticator] (management task-3) Token is not present in query
DEBUG [org.keycloak.adapters.RequestAuthenticator] (management task-3) NOT_ATTEMPTED: bearer only

发现一些有关弄乱客户端设置的主题,但所有测试都会导致相同的错误

有解决这个问题的线索吗?

谢谢!

keycloak wildfly
1个回答
0
投票

问题是 KC 22 上的重大更改,KC 删除了已弃用的 Promise api:

您可以解决此问题,构建自定义 HAL 并在 WF 上更改它,或者构建自定义 KC。

我们的选择是构建一个自定义 KC,因为它只是 1 点更改。我们在 keycloak.js 上添加了已删除的 Promise api:

这就是需要恢复的:

function Keycloak (config) {
    /*...*/
    p.promise.success = function(callback) {
        this.then(function handleSuccess(value) {
            callback(value);
        });

        return this;
    }

    p.promise.error = function(callback) {
        this.catch(function handleError(error) {
            callback(error);
        });

        return this;
    }
    /*...*/
}
© www.soinside.com 2019 - 2024. All rights reserved.