0

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

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

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

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

4

2 回答 2

2

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

于 2014-07-01T09:14:18.627 回答
0

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

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

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

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

于 2014-07-01T07:29:59.567 回答