2016-01-21 231 views
0

我在WebLogic Application Server 12中部署了基於REST的服務,該服務使用Spring Security進行使用BASIC身份驗證的身份驗證。以前我發現WebLogic有一個錯誤,如果請求中有Authorization標頭,它會攔截一個調用。401在WebLogic上通過HttpClient進行身份驗證時返回

我發現了一個非常有用的鏈接,它通過在WebLogic的config.xml中禁用<enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>來解決此問題。現在,如果我通過POSTMan訪問我的服務,它將非常有效,Spring可以處理安全問題。

在此之後,我編寫了一些使用Apache Common HttpClient庫來調用我的服務的自動化測試,但我不斷從WebLogic獲取401 Unauthorized。我的客戶代碼如下:

httpClient = new HttpClient(); 
     httpClient.getState().setCredentials(
      new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
      new UsernamePasswordCredentials(
        getTestUsername(config.getUsername()), 
        getTestPassword(config.getPassword())) 
      ); 

我試圖把AUTH PREF爲基本,將授權頭了我的請求,甚至設置身份驗證,以Preemptoive到真正的一切仍然是相同的。

我確信有一件事是Weblogic以某種方式攔截來自Java Standalone客戶端的呼叫!因爲在響應頭文件中,我得到'realm:weblogic',這是不正確的,因爲它應該是'realm:Spring Security Application',更奇怪的是我能夠使用相同的安全證書從POSTMan訪問相同的URL。我錯過了什麼?

回答

相關問題