Java 被保险单拒绝

Java 被保险单拒绝,java,soap,axis,Java,Soap,Axis,我正在使用SOAPUI&一个本地javawriten客户机来向第三方SOAP服务发送SOAP信封。作为回应,我得到了以下建议: SOAP信封: <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> <env:Fault> <faultcode>env:Client</faultcode>

我正在使用SOAPUI&一个本地javawriten客户机来向第三方SOAP服务发送SOAP信封。作为回应,我得到了以下建议:

SOAP信封:

<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>
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)
异常是否发生在客户端

有人能帮我找出这个异常的原因吗?我认为客户端出现了例外情况。

(您可能需要重新格式化您的问题,因为您的文本已经运行到您的代码中)

我非常确定错误一定来自服务器,因为当您使用soapUI调用它时,没有这样的客户机代码。 错误文本在服务器响应中,因此它必须来自服务器。 不知道为什么会说“(来自客户)”

服务器很可能拒绝您的请求,因为安全标头或其他安全策略详细信息不存在。
您知道您呼叫的服务的安全要求是什么吗?

当它被策略拒绝时。 可能是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>

用户名
密码
请确保您发送了正确的凭据。

这是一个Datapower错误(这是您的呼叫和服务之间的旧IBM安全产品)。根据我的经验,这意味着两件事之一

  • 您不是访问该服务所需的Active Directory组的成员
  • Datapower找不到您的用户名,因为用于查找您的用户名的LDAP查询正在其他域或非全局编录下查找

  • 这个错误可能还有其他原因,但我确信当我遇到这个错误时,这些都是我的问题

    关于(来自客户端)和DataPower:如果拒绝请求的策略规则被定义为客户端到服务器规则,您将得到该类型的拒绝附录。

    实际上,我认为可能没有任何安全凭据问题。如果需要在SOAP信封的头或正文中提供用户名/密码,则必须在模式或xsd文件中提供它的描述。但并没有任何与安全性相关的内容,模式中的字段只是与业务相关的。安全性需求不一定存在于WSDL中——我们已经看到很多类似的web服务端点。如果希望100%确定错误是来自后端还是来自客户端,可以使用tcpmon或wireshark或类似工具监视网络流量。使用这些工具,您可以看到从服务器返回的确切文本。但实际上soapUI已经向您展示了这一点,我相信-我已经使用了很多soapUI,它只是向您展示了服务器的原始响应-我认为您发布的XML响应就是soapUI向您展示的?Java soap-web服务将在用户名和密码丢失或无效时返回此信息。我在.Net客户端发布到JavaSOAP端点时看到了这一点,您是否曾经弄清楚为什么会发生此错误。我对soap客户端也有同样的问题