2015-05-15 76 views
1

我有訪問兩個適配器的測試應用:MobileFirst的OAuth和註銷

  1. 一個JavaScript適配器由SecurityTest引用境界保護
  2. 一個Java適配器與由對應於一個OAuth範圍保護的方法同樣的境界。

如果我按照這個順序一切正常:

  1. 嘗試訪問JS適配器,我得到的挑戰,驗證獲取數據。
  2. WL.Client.isUserAuthenticated()和WL.Client.getUserInfo()現在像預期的那樣使用WL.Client.logout()
  3. WL.Client.isUserAuthenticated(
  4. 註銷)現在顯示我不是認證
  5. 第二次嘗試訪問JS適配器導致另一個挑戰,如預期的。

但是,使用Java適配器logout()似乎不像預期那樣運行。

  1. 沒有會話開始,嘗試訪問Java適配器,挑戰發生如預期,我得到我的數據
  2. 我現在可以訪問JS適配器沒有進一步的挑戰和WL.Client.getUserInfo( )調用給出了預期的結果。
  3. WL.Client.logout()似乎工作,在WL.Client.isUserAuthenticated()現在顯示我未通過身份驗證
  4. 到Java接口的調用仍然有效,無需進一步挑戰
  5. 到JS適配器的調用並導致挑戰

如果我在我的瀏覽器模擬器環境中運行,我可以使用以下命令銷燬OAuth的會議:

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

現在的問題是:

WL.Client.logout()方法是否已銷燬OAuth會話?如果不是我應該使用什麼API?

回答

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將導致不一致的 狀態,例如,其中客戶端在服務器端登錄出012xx的領域,但仍然在該客戶端的 客戶端持有該領域的有效令牌。爲解決這種不一致問題,建議 重新獲取訪問令牌,通過使用 獲得授權的HeaderForScope方法,登錄成功後或登錄 。

例如,考慮通過安全檢查 Realm1和Realm2並稍後調用註銷(Realm2)的客戶端。在這種情況下,客戶端上的 訪問令牌仍將包含Realm1和Realm2的安全 憑據,並且客戶端可以使用此令牌訪問受保護的資源。要刷新令牌,即 僅爲Realm1獲取令牌,客戶端將調用 obtainAuthorizationHeaderForScope,而不會註銷領域Realm2。

在JavaScript中等價的調用是:

WLAuthorizationManager.obtainAuthorizationHeader("SomeRealm") 
+1

並有計劃改善關於OAuth的註銷體驗。 –