0

我正在使用 keycloak 实例登录前端并保护后端 API。在 aws 上的 linux 机器上部署后,我遇到了一个问题。通过使用 jwt 令牌访问 api,我不断被重定向到登录页面。在本地它工作正常。

我的客户是机密客户。我正在使用 client_id 和 _secret 来授权令牌调用。jwt 令牌有效并成功生成。我的 api 实现适用于 expressJs 和 keycloak-nodejs-connector:

    keycloakConfig = {
        serverUrl: 'https://keycloak.myserver.com/auth',
        realm: 'examplerealm',
        clientId: 'ui-client'
    };

   public init() {
        if (this.keycloak) {
            console.warn("Trying to init Keycloak again!");
            return this.keycloak;
        }
        else {
            console.log("Initializing Keycloak...");
            const memoryStore = new session.MemoryStore();
            // @ts-ignore
            this.keycloak = new Keycloak({ store: memoryStore }, this.keycloakConfig );
            return this.keycloak;
        }
    }

我可以想象它取决于当前的 https 设置。我的 nodejs api 为 http 和 https 提供了一个端点(本地带有自签名证书)。在运行 keycloak 的服务器上,我使用 certbot 添加了一个letsencrypt证书,在浏览器中一切看起来都很好。Keycloak 使用 docker-container jboss/keycloak 启动。

我很想弄清楚我当前的问题,非常感谢您的帮助:slight_smile:如果我错过了添加必要的信息,请告诉我。提前致谢。多米尼克

4

1 回答 1

0

我找到了解决方案。首先我更新到最新版本的 keycloak-connect。他们提供了一个新的主要版本 12,似乎配置发生了变化。

其次,配置有问题。我深入研究了当前的配置对象并发现它应该如下所示:

keycloakConfig = {
    realm: 'test-realm',
    authServerUrl: 'https://myurl/auth/',
    realmPublicKey: 'key'
};
于 2020-12-19T15:04:44.867 回答