2015-09-17 80 views
0

我們在application-descriptor.xml中定義了應用安全性的worklight應用。我們有挑戰處理者來應對挑戰。在wlCommonInit()函數中,我們稱WL.Client.Connect()函數輪流觸發質詢處理程序。用戶可以輸入用戶名/密碼併成功驗證。一切都很好,直到這一點。Worklight App提交大量HTTP 401請求

在挑戰處理程序成功驗證後,我們調用ChallengeHandler.submitSuccess()方法來通知worklight關於成功驗證。

此調用應導致成WL.client.connect() onSuccess回調函數,而是它使大量的請求URL ../App/iphone/init並與401後1-2分鐘,最終它得到HTTP 200爲特定請求retuns然後進入onSuccess()

任何想法爲什麼這麼多請求導致401?

下面的代碼片段,在main.js ...

  WL.Client.connect({ 
       onSuccess : callbackOnSuccess, 
       onFailure : callbackOnFailure 
      }); 
在challengeHandler.js

..

$('#loginButton').bind('click', function() { 
    var reqURL = '/j_security_check'; 
    var options = {}; 
    options.parameters = { 
      j_username : $('#username').val(), 
      j_password : $('#password').val() 
    }; 
    options.headers = {}; 
    ChallengeHandler.submitLoginForm(reqURL, options, ChallengeHandler.submitLoginFormCallback); 
}); 

ChallengeHandler.submitLoginFormCallback = function(response) { 
     WASLTPARealmChallengeHandler.submitSuccess(); 
}; 

回答

1

理論:

你有一個單一的MobileFirst服務器或多個?

  • 如果你只有一臺服務器,這將有助於從工具獲得網絡流量日誌Wireshark等
  • 如果多臺服務器,你隨後還碰巧有一個負載平衡器參與?

    爲了驗證成功通過,會有幾個請求 - 第一個用於觸發質詢處理程序,第二個用於傳輸用戶憑證。這些需要到達同一臺服務器。

    如果Load Balancer配置錯誤,請求可能會遇到不同的MobileFirst服務器。它確實聲音如請求得到的服務器則意味着一個認證請求命中一個服務器,但該證書請求之間彈擊中另一...

    因此,在多臺服務器的情況下,你需要確保粘性會話在使用的負載均衡器中啓用了選項

+0

更新:您是正確的。我們在農場有兩臺服務器,似乎web服務器插件沒有設置會話關聯。非常感謝您的回覆。 –