【问题标题】:Rejected by policy被政策拒绝
【发布时间】:2011-11-30 13:48:14
【问题描述】:

我正在使用 SOAPUI 和本地 Java 编写客户端将 SOAP Envelope 发送到第三方 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)

异常是否发生在客户端?

谁能帮我找出这个异常的原因?我认为客户端发生了异常。

【问题讨论】:

  • 你有没有弄清楚为什么会出现这个错误。我和肥皂客户有同样的问题

标签: java soap axis


【解决方案1】:

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

  1. 您不属于访问该服务所需的 Active Directory 组。
  2. Datapower 找不到您的用户名,因为用于查找您的用户名的 LDAP 查询在不同的域下查找或不是全局目录。

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

【讨论】:

    【解决方案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>
    

    请确保您发送的凭据正确。

    【讨论】:

      【解决方案3】:

      (您可能需要重新格式化您的问题,因为您的文本已进入您的代码)。

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

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

      【讨论】:

      • 其实我不认为可能存在任何安全凭证问题。如果需要在 SOAP Envelope 的 Header 或 body 中提供用户名/密码,则它的描述必须已存在于 schema 或 xsd 文件中。但是与安全无关,架构中的字段仅与业务相关。
      • 安全要求不一定存在于 WSDL 中——我们已经看到很多这样的 Web 服务端点。如果您希望 100% 确定错误是来自后端还是来自客户端,您可以使用 tcpmon 或 wireshark 或类似工具监控网络流量。使用这些工具,您可以看到从服务器返回的确切文本。但我相信,soapUI 已经向您展示了这一点 - 我已经使用了很多 soapUI,实际上它只是向您展示了来自服务器的原始响应 - 我认为您发布的 XML 响应就是 soapUI 向您展示的内容?
      • Java soap - 当用户名和密码丢失或无效时,Web 服务将返回此信息。我已经从 .Net 客户端发布到 java soap 端点看到了这一点,
      【解决方案4】:

      关于 (来自客户端) 和 DataPower:如果将拒绝请求的策略规则定义为 Client to Server 规则,您将获得那种类型的拒绝附录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        • 2017-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 2019-08-22
        相关资源
        最近更新 更多