我尝试使用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上进行编程登录?
祝你好运, 比利
答案 0 :(得分:2)
WAS Liberty中的JAAS登录过程对用户进行身份验证并创建用户主题。成功创建主题后创建cookie - 在JAAS登录过程之外。
正如您已确认HttpServletRequest.login确实创建了cookie。应该是HttpServletRequest.authenticate方法。您可以使用其中任何一种。
如果您希望JAAS登录过程创建cookie,您可以打开功能请求(RFE)here
- 阿贾伊