Worklight 适配器结束会话

Posted

技术标签:

【中文标题】Worklight 适配器结束会话【英文标题】:Worklight adapter end session 【发布时间】:2014-06-24 05:02:17 【问题描述】:

我正在使用基于适配器的身份验证。客户端获得一些凭据,适配器再次验证这些凭据是企业服务,结果是我现在在我的 EnterpriseRealm 中。

稍后,受该领域保护的我的 HTTP 适配器会从其他企业服务获取一些数据,提供在原始身份验证发生时获得的一些凭据。

一种可能的结果是企业服务现在可能检测到用户的会话不再有效 - 一种可能的情况是用户的权限已被撤销 - 因此我的 HTTP 适配器现在“知道”用户不再应该被视为在 enterpriseRealm 中经过身份验证,将来对 HTTP 适配器的调用应该需要重新身份验证。

我在服务器端寻找某种方法来“注销”或以其他方式通知 Worklight 会话无效。到目前为止,我能看到的最好的方法是将特定的错误响应发送回客户端并让客户端代码调用 WL.Client.logout()。我对此有点不安,因为它要求我的 HTTP 适配器方法的所有客户端都正确处理此错误情况。有没有更好的选择?

【问题讨论】:

【参考方案1】:

与成功验证后设置活动用户的方式类似,您可以使用 WL.Server.setActiveUser("your-realm", null) API。这将破坏存储在 WL 服务器上的用户身份。一旦你这样做了 - 下一个传入的请求将获得身份验证挑战。

【讨论】:

【参考方案2】:

推测我自己对这个问题的部分答案:

如果使用基于适配器的身份验证,则客户端将安装挑战处理程序。所有适配器响应都提供给已安装的挑战处理程序,因此如果 HTTP 适配器返回与挑战处理程序期望的模式匹配的响应,我们就有机会终止会话。

这使挑战处理程序成为单点控制,无需各种客户端代码调用适配器来进行此检查。

我假设此时挑战处理程序可以调用 logout();

【讨论】:

以上是关于Worklight 适配器结束会话的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 适配器安全性

IBM Worklight:调用 Worklight 适配器时没有 SessionManager

将 cookie 附加到 WorkLight Adapter 响应标头

使用安全测试的 IBM Worklight 适配器

如何在 ibm worklight 混合移动应用程序中处理客户端会话超时

IBM Worklight Adapter 需要 OAuth