3

我尝试使用 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 上进行编程登录?

最好的问候,比莉

4

1 回答 1

2

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

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

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

——阿杰

于 2015-07-06T21:16:20.780 回答