vmware用户名和密码_VMWare vijava –“用户名或密码不正确”异常的奇怪情况
vmware用戶名和密碼
在我參與的一個項目中,我們使用yavijava (這是vijava的分支 )庫與托管我們的VM的vCenter進行交互。 vCenter通過其Web服務端點公開了各種API,這些API通過HTTP調用。 yavijava庫具有必要的鉤子,允許開發人員在客戶端使用他們選擇的HTTP客戶端庫來處理對vCenter的調用。
在我們的集成中,我們插入了Apache HTTP客戶端庫 ,以便yavijava調用最終在內部使用該HTTP庫進行交互。 一切正常,我們能夠調用vCenter API。 我主要說的是,因為我們偶爾會不斷看到如下異常:
InvalidLogin:由于用戶名或密碼錯誤,無法完成登錄。
這令人感到困惑,因為我們完全確定用于與vCenter交互的用戶名和密碼正確。 特別是由于之前的所有調用都進行得很好,因此在我們開始看到這些異常之前。
異常stacktrace沒有包含任何更有用的東西,其他任何日志也沒有。 因此,剩下的唯一選擇就是去查看vCenter(服務器端)事件日志以查看是否可以找到某些東西。 幸運的是,我可以訪問具有vSphere Client的設置,然后將其用于連接到vCenter。 vSphere Client允許您查看在vCenter上生成的事件日志。
查看日志,顯示出一些有趣且有用的東西。 每次我們在客戶端遇到此“錯誤的用戶名或密碼”異常時,vCenter Server上在INFO級別上都有一個相應的事件日志,上面寫著“用戶無法登錄,因為用戶已經登錄”。 該事件日志是一個足夠好的提示,可以讓您對可能發生的事情有所了解。
基于該提示,我可以形成的理論是,對于傳入的(登錄)請求,vCenter Server端會注意到該請求上的某些內容,從而給人一種用戶已經登錄的印象。考慮到我使用Java EE技術的背景,立即想到的明顯的事情是,請求被附加了一個“ Cookie”,服務器端使用它來將請求與特定會話相關聯。 因為我可以訪問發出此登錄請求的客戶端代碼,所以我絕對確定該請求沒有任何顯式設置的Cookie標頭。 這就提出了一個問題,即cookie的誰/位置與請求相關聯。 如果這不是我們發出的請求的一部分,那么唯一可能發生的地方是HTTP客戶端庫內。 閱讀Apache HTTP客戶端庫的文檔,證實了以下理論:HTTP客戶端會自動將(先前生成的)Cookie與請求相關聯。
更具體地說,HTTP客戶端庫使用池連接。 發出請求后,將使用其中一個池化連接(如果有)。 在此特定情況下發生的是,先前的登錄將獲取連接C1,并且登錄將成功。 從vCenter返回的針對該登錄請求的響應將在響應標頭中包含一個Cookie集。 然后,Apache HTTP客戶端庫針對使用的連接跟蹤此Cookie。 現在,當后續登錄請求到達時,如果相同的池連接C1用于該請求,則HTTP客戶端庫會將針對該連接C1跟蹤的Cookie附加到此新請求。 結果,vCenter Server端最終看到傳入的登錄請求具有與之關聯的Cookie,這表明該請求已經存在一個登錄會話。 因此,vCenter事件日志中的該INFO消息。 當然,返回的錯誤信息不多,實際上有點誤導,因為它說用戶名/密碼不正確。
現在我們知道發生了什么,解決方案非常簡單。 Apache HTTP客戶端庫允許您配置Cookie策略管理。 由于在我們的案例中,我們希望處理針對請求的顯式設置Cookie,因此我們決定采用可在HTTP客戶端上配置的“ ignoreCookies”策略。 有關更多信息,請參見HTTP客戶端庫文檔 (請參閱“ Cookie的手動處理”部分)。 進行更改后,我們將不再看到此異常。
我找不到任何有關此問題的信息。 我能找到的最接近的是該論壇線程https://sourceforge.net/p/vijava/discussion/826592/thread/91550e2a/ 。 它沒有一個確定性的解決方案,但似乎確實存在與用戶所遇到的問題相同的問題(將近7年!)
翻譯自: https://www.javacodegeeks.com/2018/05/vmware-vijava-the-curious-case-of-incorrect-user-name-or-password-exception.html
vmware用戶名和密碼
總結
以上是生活随笔為你收集整理的vmware用户名和密码_VMWare vijava –“用户名或密码不正确”异常的奇怪情况的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 娘亲舅大俗语是什么意思 娘亲舅大俗语的意
- 下一篇: java从数组查找指定整数_如何在Jav