2013-04-17 54 views
0

我創建了一個Web服務,用Java編寫,並使用Eclipse & Axis2生成。我在我的services.xml文件中創建了一個ws-security策略,並創建了一個身份驗證處理程序。我對Web服務完全陌生,所以如果我的陳述完全錯誤,請原諒。在生成Web服務並擁有wsdl之後,我創建了一個SOAPUi項目並生成請求。 soapui生成的請求將soap頭部留空,所以當我運行請求時,我收到一個安全異常,認證失敗。當我輸入正確的標題時:如何使Web服務知道請求SOAP頭是必需的?

<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"> 
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-12468716"> 
<wsu:Created>2008-06-23T13:17:13.841Z</wsu:Created> 
<wsu:Expires>2008-06-23T13:22:13.841Z</wsu:Expires> 
</wsu:Timestamp> 
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-31571602"> 
<wsse:Username>alice</wsse:Username> 
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">bobPW</wsse:Password> 
</wsse:UsernameToken> 
</wsse:Security> 
<wsa:To>http://localhost:8081/axis2/services/sample01</wsa:To> 
<wsa:MessageID>urn:uuid:AEDBA74A8D1FC94B631214227032877</wsa:MessageID> 
<wsa:Action>urn:echo</wsa:Action> 
</soapenv:Header> 

然後它工作。有沒有什麼是我的wsdl缺失,告訴SoapUi在用戶名和密碼字段中自動生成帶有問號?的標頭?因爲我已經將SoapUi用於其他wsdl,它自動生成了這些標頭。

+0

男子從原來的給予制止的URL這是不安全的任何機構可以acceess這個http://docs.oasis-open.org/wss –

回答

0

是喬恩,你是正確的。在您的wsdl中,您需要在請求消息結構中將這些用戶名和密碼字段添加爲標頭。您還需要在代碼中實現它以從頭中獲取用戶名和密碼並相應地執行。

此外,您還可以在SOAP UI中的測試請求屬性選項卡上指定用戶名和密碼。它會自動添加標題在您的傳出肥皂請求與用戶名和密碼。如果需要,也可以在首選項中禁用此功能。

感謝, ambuj

相關問題