2015-07-01 3 views
3

Я пытался сделать старомодный вход на БЫЛА Liberty с помощью LoginContext:WAS Liberty: SSO Cookie не установлен на программном входе

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()); 

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

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

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

С наилучшими пожеланиями, Billie

ответ

2

Процесс Логин JAAS в БЫЛА Liberty проверяет подлинность пользователя и создает объект пользователя. Файл cookie создается после успешного создания объекта - вне процесса входа в JAAS.

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

Если вы хотите, чтобы процесс Логина JAAS для создания куков, вы можете открыть запрос функции (РС) here

--Ajay

Смежные вопросы