2011-11-30 97 views
1

我正在使用SOAPUI &本地Java wriiten客戶端將SOAP Envelope發送到第三方SOAP服務。爲了迴應這個問題,我得到以下解決方案,被策略拒絕

**SOAP Envelope:-** 

    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
     <env:Body> 
      <env:Fault> 
      <faultcode>env:Client</faultcode> 
      <faultstring>Rejected by policy. (from client)</faultstring> 
      </env:Fault> 
     </env:Body> 
    </env:Envelope> 

**Exception:-** 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client 
faultSubcode: 
faultString: Rejected by policy. (from client) 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:Rejected by policy. (from client) 
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222) 
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129) 
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) 
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) 
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 

客戶端發生異常嗎?

任何人都可以幫我找出這個異常的原因嗎?我認爲這種異常是在客戶端發生的。

+0

你有沒有想過爲什麼會出現這個錯誤。我遇到了與肥皂客戶端相同的問題 – user575219

回答

1

(您可能想重新格式化您的問題,因爲您的文本已經運行到您的代碼中)。

我敢肯定,錯誤必須來自服務器,因爲當你用soapUI調用它時,沒有客戶端代碼。 錯誤文本在服務器響應中,所以它必須來自服務器。 不知道爲什麼它說「(來自客戶)」。

服務器很可能會拒絕您的請求,因爲安全標頭或其他安全策略詳細信息不存在。 你知道你打電話的服務的安全要求是什麼嗎?

+0

其實我不認爲可能存在任何安全憑證問題。如果需要在SOAP Envelope的Header或Body中提供用戶名/密碼,則其描述必須已存在於模式或xsd文件中。但是沒有任何與安全相關的內容,模式領域僅僅是與業務相關的。 –

+0

WSDL中不一定存在安全需求 - 我們已經看到很多這樣的Web服務端點。如果您希望100%確定錯誤是來自後端還是來自客戶端,那麼您可以使用tcpmon或wireshark或類似方式監視網絡流量。使用這些工具,您可以看到從服務器返回的確切文本。但是soapUI已經向你展示了,我相信 - 我已經使用soapUI很多,它只是向你展示服務器的原始響應 - 我認爲你發佈的XML響應是soapUI展示給你的嗎? – davidfrancis

+0

Java soap - 如果用戶名和密碼丟失或無效,Web服務將返回此信息。我已經看到.Net客戶端發佈到java soap端點, –

2

當它是政策拒絕。 這可能是SOAP頭中的用戶名和密碼問題。

<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
    <wsse:UsernameToken> 
    <wsse:Username>username</wsse:Username> 
    <wsse:Password>password</wsse:Password> 
    </wsse:UsernameToken> 
</wsse:Security> 

請確保您發送了正確的憑證。

1

這是一個Datapower(這是您的調用和服務之間的舊IBM安全產品)錯誤。根據我的經驗,這意味着兩件事之一。

  1. 您不是需要擊中該服務的Active Directory組的一部分。
  2. Datapower無法找到您的用戶名,因爲用於查找您的用戶名的LDAP查詢正在查看不同的域或全局目錄下。

可能還有其他原因導致此錯誤,但我確定這些是我遇到此錯誤時的問題。