2014-06-24 53 views
0

我有一個Web服務(JAX-WS),一個WSDL,一個桌面應用程序客戶端和一個Weblogic 12c服務器。我試圖在Client->Web Service->Weblogic->Active Directory之間實現基本身份驗證。從客戶端發送到Web服務時,通過將用戶名/密碼放在SOAP消息的頭部,我可以設置所有內容。手動Weblogic基本認證

Weblogic自動拉取該標題信息並根據Active Directory驗證用戶。大。但眼前的問題是thse:

  1. 我應該在頭在所有發送憑據,它不進行驗證,但是允許完全匿名用戶訪問。
    • 我需要發送適當的錯誤消息並防止匿名用法。
  2. 我應該送無效憑據它拋出客戶端上的socket read例外。
    • 我需要發回一個正確的錯誤消息;而不是讓它在客戶端上爆炸。
  3. 我應該送有效憑據,但無效授權;我已在每個Stateless EJB方法上設置了@RolesAllowed({"SomeRole"})。它在房子的Web服務端引發安全通道異常。
    • 我需要以某種方式捕獲這個異常,併發送回一個正確的信息給客戶端

有沒有辦法做到這一切,而不定製WebLogic域?這感覺就像我需要手動控制Weblogic的基本認證,但是我覺得我正在步進weblogic的JAAS Login Module--它定製了域並且我想避免。

回答

0

使用處理程序來攔截傳入和傳出的請求。

+0

你能舉個例子嗎? – Mister

+0

繼承SOAPHandler 中的類並覆蓋handleFault,getHeaders和handleMessage以處理SOAP錯誤,SOAP消息的標題和SOAP消息正文。 –