2015-07-01 32 views
3

我试图用LoginContext的自由上做一个老式登录:不是自由: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上使用login-Method时,看起来都一样,但不会删除cookie。

有谁知道如何使用用户注册表和SSO Cookie在WAS Liberty上进行程序化登录?

最好的问候, 比利

回答

2

JAAS登录过程中不是自由认证用户和创建用户主体。一旦主题成功创建,即在JAAS登录过程之外创建cookie。

正如您已经确认HttpServletRequest.login确实创建了cookie。所以应该使用HttpServletRequest.authenticate方法。您可以使用其中任何一种。

如果你想在JAAS登录过程创建您可以打开一个功能请求(RFE)here

--Ajay

饼干