无法使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:443108.128.***.168是Keycloak服务器的IP。
我不能验证是否有允许我使用keycloak-connect with proxy的配置。
附加几行与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'
}));
发布于 2021-11-30 13:34:07
你不需要app.set("trust proxy"),只需要app.enable("trust proxy")。
这是我和saw a SO question about it偶然发现的。我目前在“信任代理”后面没有任何其他东西,就像在示例中一样-在一个入口控制器后面运行我的应用程序,但这基本上解决了我使用Keycloak的协议问题。
https://stackoverflow.com/questions/62389674
复制相似问题