关闭应用程序后如何维护 LTPA Token?

Posted

技术标签:

【中文标题】关闭应用程序后如何维护 LTPA Token?【英文标题】:How to mantain the LTPA Token after closing the application? 【发布时间】:2013-11-28 09:25:41 【问题描述】:

我已经实现了WASLTPAAuthentication(使用 WASLTPALoginModule 和 Realm)并且效果很好。 我可以调用我的 JAX-RS,他们通过 cookie 获取身份。

我的问题是:在我点击主页按钮并打开最近应用程序的菜单以滑动并退出应用程序后,一旦我再次打开它,会话被破坏并且 cookie 丢失,我需要插入我的凭据和再次登录。

有没有办法防止这种情况发生?我需要以某种方式将 cookie 存储在 localStorage 上吗?

【问题讨论】:

为了清楚起见,当您说“我可以调用我的 JAX-RS 并且他们通过 cookie 获取身份”时,您的意思是您正在调用适配器以发出请求,而适配器是什么是发送 cookie,对吗? 不,我没有尝试将 cookie 放入某个适配器属性中,我只是使用 jQuery XHR 调用进行了 $.ajax() 调用。 【参考方案1】:

看起来即使您的 LTPA cookie 仍然有效,但当您关闭应用程序并且会话终止时,cookie 正在被清除。您需要将 LTPA cookie 保存在本地存储中,然后手动设置 cookie,以便将其用于多个会话。

LTPA cookie 包含在成功登录到 WASLTPARealm 后返回的 UserIdentity 的属性对象中,因此您应该已经可以访问它。它只是保存和检索它的问题。

【讨论】:

LTPA 令牌位于 response.responseJSON.userInfo..attributes.LtpaToken 的响应中。您可以保存它,并在应用重新启动后,在任何对 $.ajax() 的调用中显式设置 cookie。但从 Worklight 的角度来看,似乎没有办法使用令牌登录。当您提交登录表单时,我看不到设置 cookie 的方法。我试过 WL.Client.addGlobalHeader("Cookie", "LtpaToken=" + value);和challengeHandler.submitLoginForm("/j_security_check", headers : Cookie: "LtpaToken=" + value,都没有导致LtpaToken cookie被发送到服务器。 这是一个正确的观察。从 $.ajax-cookie 的角度来看,从本地存储中存储和检索 cookie 将起作用。但是,从 Worklight 的角度来看,情况并非如此。关闭应用程序后,会话将被终止,用户将需要再次登录。在这种情况下,您不能使用 LTPA 令牌登录 Worklight。如果您想进行某种自动登录,则必须将用户凭据保存在本地存储中,然后在应用启动时发送它们。

以上是关于关闭应用程序后如何维护 LTPA Token?的主要内容,如果未能解决你的问题,请参考以下文章

缓存/存储在 datapower 中生成的 LTPA 令牌

生成 LTPA 令牌?

如何在两个窗口之间维护 Wpf 应用程序中的会话? [关闭]

如何创建一个新浪微博应用以及获得Access token

Tomcat 中的 LTPA 令牌(Spring 安全性)

MobileFirst:WAS Liberty 禁用 LTPA 令牌自动生成