Keycloak Node.js 适配器在公司代理后面不起作用
Posted
技术标签:
【中文标题】Keycloak Node.js 适配器在公司代理后面不起作用【英文标题】:Keycloak Node.js Adapter not working behind corporate proxy 【发布时间】:2020-10-04 22:49:05 【问题描述】:无法让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-connect 与代理一起使用的配置。
附上几行与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'
));
【问题讨论】:
【参考方案1】:您不需要app.set("trust proxy")
,而是app.enable("trust proxy")
。
我自己和saw a SO question about it 偶然发现了这个。 我目前在“信任代理”后面没有任何其他东西(如示例中所示)运行顺利 - 在 Ingress Controller 后面运行我的应用程序,但这基本上解决了我使用 Keycloak 的协议问题。
【讨论】:
以上是关于Keycloak Node.js 适配器在公司代理后面不起作用的主要内容,如果未能解决你的问题,请参考以下文章
keycloak + spring 适配器 +spring security 反向代理重定向到root
如何在 Spring Boot 中将 keycloak 与不同的上下文根和反向代理集成
Keycloak:使用 nginx 后面的 javascript 适配器的重定向循环