keycloak-connect nodejs /仅在首次登录和prod时被拒绝访问



我有一个流星/nodeJs应用程序,需要连接到我的客户端进行身份验证。我这样设置了一个连接接入点(我只是匿名了各种值):

import Keycloak from "keycloak-connect";
import { WebApp } from "meteor/webapp";
import express from "express";
import session from "express-session";
const app = express();
const memoryStore = new session.MemoryStore();
app.use(
session({
secret: "secret",
resave: false,
saveUninitialized: true,
store: memoryStore,
})
);
const kcConfig = {
clientId: "clientId",
serverUrl: "realmUrl",
realm: "clientName",
realmPublicKey: "publicKey",
};
const keycloak = new Keycloak({ store: memoryStore }, kcConfig);
app.use(keycloak.middleware());
app.get("/connect", keycloak.protect(), (req, res) => {
// doing my stuff here
res.writeHead(301, {
Location: "/connected",
});
res.end();
});
WebApp.connectHandlers.use(app);

问题是:

  • 当我在本地运行服务器并转到/connect链接时,我被重定向到连接平台。我连接,我被发送回我的localhost:3000/connected =>
  • 当我在生产环境中执行完全相同的流程时,在第一次尝试登录后,我得到了一个拒绝访问(空白页,只有拒绝访问写入)。如果我手动回到/connect链接,我将直接连接(我猜我正确地获得了令牌,可以再次连接)

我不知道为什么在两个环境中的行为是不同的,为什么我在prod中得到一个拒绝访问的页面。

正如评论中提到的,我的ROOT_URL有一个问题,留下了一个尾斜杠。去掉后效果更好。

最新更新