密钥斗篷Node.js适配器在公司代理后面不工作



无法让https://www.npmjs.com/package/keycloak-connect使用代理。不过,我能够从浏览器和 curl 使用相同的代理访问 Keycloak 服务器。

我尝试过的唯一有希望的事情是:

app.set('trust proxy', 'loopback');

。它没有用。

如果我在自己的 WiFi 上使用它(无代理(,我可以通过 keycloak-connect 进行连接。使用代理时遇到的错误是:

Could not obtain grant code: Error: connect ETIMEDOUT 108.128.***.168:443

108.128.***.168是Keycloak服务器的IP。

我无法验证是否有允许我将密钥斗篷连接与代理一起使用的配置。

附加几行与 keycloak 相关的代码:

const Keycloak = require('keycloak-connect');
const memoryStore = new session.MemoryStore();
const keycloakConfig = {
clientId: process.env.CLIENT_ID,
'auth-server-url': process.env.SERVER_URL,
'confidential-port': 0,
'policy-enforcer': {},
'ssl-required': 'external',
'verify-token-audience': true,
realm: process.env.REALM,
credentials: {
'secret': process.env.CLIENT_SECRET
},
realmPublicKey: process.env.REALM_PUBLIC_KEY
};
const keycloak = new Keycloak({
store: memoryStore
}, keycloakConfig);
const MongoStore = mongoSessionStore(session);
const sess = {
name: 'ssg-next.sid',
secret: sessionSecret,
store: new MongoStore({
mongooseConnection: mongoose.connection,
ttl: 14 * 24 * 60 * 60
}),
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
maxAge: 14 * 24 * 60 * 60 * 1000
}
};
if (!dev) {
server.set('trust proxy', 'loopback'); // trust first proxy
sess.cookie.secure = true; // serve secure cookies
}
server.use(keycloak.middleware({
logout: '/logout'
}));

你不需要app.set("trust proxy"),而是app.enable("trust proxy").

我自己偶然发现了这个问题,并看到了一个关于它的问题。 我目前顺利进行,没有其他任何东西在"信任代理"后面,如示例中所示 - 在入口控制器后面运行我的应用程序,但这基本上解决了我对 Keycloak 的协议问题。

最新更新