WAS Liberty:SSO Cookie未设置为程序化登录

时间:2015-07-01 08:36:46

标签: jaas websphere-liberty ltpa

我尝试使用LoginContext在WAS Liberty上进行旧式登录:

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上进行编程登录?

祝你好运, 比利

1 个答案:

答案 0 :(得分:2)

WAS Liberty中的JAAS登录过程对用户进行身份验证并创建用户主题。成功创建主题后创建cookie - 在JAAS登录过程之外。

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

如果您希望JAAS登录过程创建cookie,您可以打开功能请求(RFE)here

- 阿贾伊