簡體   English   中英

Keycloak Node.js 適配器在公司代理后面不工作

[英]Keycloak Node.js Adapter not working behind corporate proxy

無法讓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' }));

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

我自己偶然發現了這個, 看到了一個關於它的問題 我目前在“信任代理”后面沒有任何其他東西,如示例中所示 - 在 Ingress Controller 后面運行我的應用程序,但這基本上解決了我使用 Keycloak 的協議問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM