WAS Liberty: файл cookie системы единого входа не установлен при программном входе в систему

Я попытался выполнить старомодный вход в WAS Liberty, используя LoginContext:

CallbackHandler callbackHandler = WSCallbackHandlerFactory
                .getInstance().getCallbackHandler("userName",
                        "realmName", "password", request,
                        response, null);
LoginContext loginContext = new LoginContext("system.WEB_INBOUND",
                callbackHandler);
loginContext.login();
System.out.println(loginContext.getSubject());
WSSubject.setRunAsSubject(loginContext.getSubject());

Код выполняется успешно, и пользователь аутентифицируется, но только для этого конкретного запроса. Я обнаружил, что SSO Cookie (Ltpa) не установлен, поэтому я попытался установить его вручную:

response.addCookie(WebSecurityHelper.getSSOCookieFromSSOToken());

Теперь cookie SSO установлен, но удаляется/сбрасывается при следующем запросе.

Когда я использую метод входа в систему для HttpServletRequest, все выглядит одинаково, но файл cookie не удаляется.

Кто-нибудь знает, как выполнить программный вход в WAS Liberty с помощью реестра пользователей и файлов cookie SSO?

С уважением, Билли


person Billie    schedule 01.07.2015    source источник


Ответы (1)


Процесс входа JAAS в WAS Liberty аутентифицирует пользователя и создает субъект пользователя. Файл cookie создается после успешного создания субъекта — вне процесса входа в систему JAAS.

Как вы подтвердили, HttpServletRequest.login создает файл cookie. То же самое должен делать и метод HttpServletRequest.authenticate. Вы можете использовать любой из них.

Если вы хотите, чтобы процесс входа в систему JAAS создавал файл cookie, вы можете открыть запрос функции (RFE) здесь

--Аджай

person Ajay    schedule 06.07.2015