Keycloak с Node.js API терпит неудачу через Docker - PullRequest
0 голосов
/ 21 января 2020

У меня есть Node.js Rest API, который интегрирован с Keycloak. Когда я запускаю API локально без docker, все работает нормально. Но всякий раз, когда я запускаю API через свой docker образ, я получаю ошибку 403 (запрещено). Я уже убедился, что мой контейнер может подключиться (ping / te lnet) к моему серверу Keycloak. Есть идеи, что может быть причиной проблемы?

Я использую следующую библиотеку для интеграции с Keycloak: https://github.com/keycloak/keycloak-nodejs-connect

Промежуточное ПО Keycloak:

const session = require("express-session");
const Keycloak = require("keycloak-connect");

function configureKeycloack(app) {
  // session
  const memoryStore = new session.MemoryStore();
  app.use(
    session({
      secret: "secret-here",
      resave: false,
      saveUninitialized: true,
      store: memoryStore
    })
  );
  const keycloak = new Keycloak({
    store: memoryStore
  });
  app.use(
    keycloak.middleware({
      logout: "/logout",
      admin: "/"
    })
  );
  // Middleware
  app.use("/api/**", keycloak.protect());
}

module.exports = configureKeycloack;

keycloak. json

{
    "realm": "my-realm",
    "bearer-only": true,
    "auth-server-url": "http://172.18.0.3:8080/auth",
    "ssl-required": "external",
    "resource": "communication-plan",
    "verify-token-audience": true,
    "credentials": {
        "secret": "secret-goes-here...."
    },
    "confidential-port": 0,
    "policy-enforcer": {}
}

Dockerfile

FROM node:10.16.3
WORKDIR /usr/src/app
COPY package*.json ./
COPY .npmrc ./
RUN npm install
COPY . .
EXPOSE 3001
CMD npx sequelize db:migrate && node src/index.js

1 Ответ

0 голосов
/ 29 марта 2020

Мне удалось найти обходной путь с помощью функции host network в контейнере. Как описано в этом посте , связанном с аналогичной проблемой с POSTMAN, я передаю --network host команде docker run, и она работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...