Отдельный (новый) сеанс для каждого вызова SSO - PullRequest
0 голосов
/ 12 сентября 2018

Я столкнулся с ситуацией с SSO в Liferay 6.2, где мне нужно очистить / удалить существующий сеанс клиента (браузера) и создать новый для запрошенного пользователя.

Этот сценарий специально для умныхустройства, на которых несколько пользователей (скажем, одного семейства) используют одно устройство для доступа к нашему сайту.

Вариант использования:

  1. Пользователь A уже имеет сеанс вбраузер.
  2. Пользователь B запрашивает доступ к сайту с помощью SSO (аналог устройства / браузера).
  3. Предыдущий сеанс возвращается вместо нового сеанса.

У меня естьуже отлажен с помощью AutoLoginFilter и обнаружил, что предыдущий сеанс возвращается на основе атрибута j_username, установленного в сеансе.

Я попытался добавить следующую пользовательскую логику к invalidate предыдущего сеанса и установить атрибуты сеанса для новогопользователь, но браузер показывает ERR_TOO_MANY_REDIRECTS - Try clearing your cookies.

if (jUserName != null && !session.isNew()) {
    jUserName = null;

    try {
        session.invalidate();
        session = request.getSession(true);
    }
    catch (Exception e) {
        ;
    }
}

Думал, что проблема может быть решена после сброса связанных куки (программно), но это не помоглоее.

Есть ли еще что-то, чего мне не хватает?

...