Адаптер Keycloak node.js не делает недействительным готовить сеанс connect.sid ie при выходе - PullRequest
0 голосов
/ 20 февраля 2020

Node.js keycloak- nodejs -connect адаптер (версия 4.3) используется в шлюзе приложений для защиты конечных точек микросервисов в соответствии с документами :

var session = require('express-session');
var Keycloak = require('keycloak-connect');

var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak({ store: memoryStore });

Однако после того, как пользователь вошел в систему / вышел из системы, connect.sid cook ie, происходящий из express -сессии , все еще сохраняется в браузере. Это вызывает непредвиденные проблемы, если впоследствии другой пользователь входит в систему через тот же браузер.

Как правильно очистить connect.sid express -сессионного повара ie правильно?

Переопределение кода хранилища сессий адаптера путем добавления функции response.clearCookie('connect.sid', { path: '/' }); к unstore помогло. Тем не менее, это кажется слишком сложным:

    var SessionStore = require('keycloak-connect/stores/session-store');

    let store = (grant) => {
        return (request, response) => {
          request.session[SessionStore.TOKEN_KEY] = grant.__raw;
        };
    };

    let unstore = (request, response) => {
        delete request.session[SessionStore.TOKEN_KEY];
        response.clearCookie('connect.sid', { path: '/' });
    };

    SessionStore.prototype.wrap = (grant) => {
        if (grant) {
          grant.store = store(grant);
          grant.unstore = unstore;
        }
    };

Какой-нибудь адаптер keycloak или express -сессия конфигурации лучше достигают цели?

...