问题描述
我正在使用 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 添加了一个 Letencrypt 证书,并且在浏览器中一切正常。 Keycloak 由 docker-container jboss/keycloak 启动。
我很想弄清楚我当前的问题,非常感谢您的帮助:slight_smile:如果我错过了添加必要信息,请告诉我。 提前致谢。 多米尼克
解决方法
我找到了解决方案。 首先我更新到最新版本的keycloak-connect。他们提供了一个新的主要版本 12,似乎配置发生了变化。
其次是配置有问题。我深入研究了当前的配置对象并发现它应该是这样的:
StructType