MobileFirst OAuth和Logout

时间:2015-05-15 07:03:27

标签: ibm-mobilefirst

我有一个访问两个适配器的测试应用程序:

  1. 受引用领域的SecurityTest保护的JavaScript适配器
  2. 具有受同一领域对应的OAuth范围保护的方法的Java适配器。
  3. 如果我遵循这个顺序,一切都按预期工作:

    1. 尝试访问JS适配器,我受到挑战,验证,获取数据。
    2. WL.Client.isUserAuthenticated()和WL.Client.getUserInfo()现在按预期行事
    3. 使用WL.Client.logout()
    4. 注销
    5. WL.Client.isUserAuthenticated()现在显示我未经过身份验证
    6. 第二次尝试访问JS适配器会导致另一个挑战,如前所未有。
    7. 但是,使用Java Adapter logout()似乎没有按预期运行。

      1. 从没有会话开始,尝试访问Java适配器,挑战按预期发生,我得到我的数据
      2. 我现在可以在没有进一步挑战的情况下访问JS适配器,并且WL.Client.getUserInfo()调用可以提供预期的结果。
      3. WL.Client.logout()似乎有效,因为WL.Client.isUserAuthenticated()现在显示我未经过身份验证
      4. 对Java适配器的调用仍可正常运行
      5. 对JS适配器的调用确实会导致质询
      6. 如果我在浏览器模拟器环境中运行,我可以使用此命令销毁OAuth会话:

         localStorage.removeItem("com.worklight.oauth.idtoken")
        

        问题是:

        WL.Client.logout()方法是否已销毁OAuth会话?如果不是我应该使用什么API?

1 个答案:

答案 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")