我有一个访问两个适配器的测试应用程序:
如果我遵循这个顺序,一切都按预期工作:
但是,使用Java Adapter logout()似乎没有按预期运行。
如果我在浏览器模拟器环境中运行,我可以使用此命令销毁OAuth会话:
localStorage.removeItem("com.worklight.oauth.idtoken")
问题是:
WL.Client.logout()方法是否已销毁OAuth会话?如果不是我应该使用什么API?
答案 0 :(得分:2)
使用OAuth,退出'工作'不同。请参阅以下用户文档主题(搜索"注销"):http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/com.ibm.worklight.dev.doc/dev/c_oauth_security_model.html?lang=en
登录/注销API:
WLClient登录/注销API使用户能够 通过更新服务器端登录和注销特定领域 安全状态。但是,在基于OAuth的新安全模型中, 安全凭证也保存在客户端的访问令牌中 侧。结果是使用此API将导致不一致 例如,状态,客户端从域中注销 服务器端但仍保留有关该域的有效令牌 客户端。为了解决这种不一致,建议使用 通过使用,重新获取访问令牌 在成功登录后,获取AuthorAuthorizationHeaderForScope方法 注销。例如,考虑通过安全检查的客户端 Realm1和Realm2,后来调用logout(Realm2)。在这种情况下, 客户端上的访问令牌仍然包含安全性 Realm1和Realm2的凭据,客户端可以使用它 令牌访问受保护的资源。刷新令牌,即to 仅获取Realm1的令牌,客户端调用 在没有注销域Realm2的情况下获取AuthorAeaderizationScope。
在JavaScript中,等效的调用是:
WLAuthorizationManager.obtainAuthorizationHeader("SomeRealm")