У меня есть 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