Я не уверен, что это самое лучшее место, чтобы спросить об этом, но я действительно не знаю, где еще go. Вот ситуация.
Моя компания недавно внедрила SSO. Сам процесс SSO работает отлично. Теперь проблема в том, что, как только сервер получил ответ от службы единого входа, он генерирует cook ie и сеанс и отправляет ответ клиенту. Недавно мы столкнулись со странной проблемой, когда пользователь мог войти в систему и быть перенаправленным на панель мониторинга. Затем другой пользователь загрузит эту панель и войдет в систему как первый пользователь, вошедший в систему. Это произойдет для каждого пользователя, который зашел на сайт после этого (все они вошли в систему как первый пользователь).
Дело в том, что это не будет происходить каждый день. Это было непостоянно, но случилось так, что, очевидно, мы не могли позволить этому существовать в производстве. После нескольких дней копания статей мы в конечном итоге «решили» проблему, отключив кеширование через нашу компанию по веб-безопасности Cloudflare. С тех пор проблема не исчезла.
Это наводит меня на мысль, что, возможно, повар ie, содержащий идентификатор сеанса первого пользователя, вошедшего в систему, был каким-то образом кэширован cloudflare, а затем отправлен каждому клиенту. что просил этот сайт? Но это просто не имеет смысла, и я не смог подтвердить это подозрение ни в ходе испытаний, ни сканирования в Интернете.
Есть какие-нибудь мысли здесь? Я хотел бы реализовать некоторую форму кэширования по соображениям производительности, но не за счет публичного предоставления пользовательских данных.
Именно так мы раскручиваем сессии на нашем сервере.
let sessionObj = {
secret: SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {}
};
if (NODE_ENV === 'production') {
sessionObj.cookie.secure = true;
app.set('trust proxy', 1);
const Client = redis.createClient({
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT
});
sessionObj.store = new RedisStore({
client: Client
});
}
app.use(session(sessionObj));