2011-11-30 7 views
1

SOAP 봉투를 제 3 자 SOAP 서비스로 보내기 위해 SOAPUI & 로컬 Java 클라이언트를 사용하고 있습니다. 그 내가 갖는 다음 execption에 대한 응답에서정책에 의해 거부 됨

**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

실제로 보안 자격 증명 문제가있을 것이라고 생각하지 않습니다. Username/password가 SOAP Envelope의 헤더 또는 본문에 제공되어야하는 경우 스키마 또는 xsd 파일에 설명이 있어야합니다. 그러나 보안과 관련된 것은 없지만 스키마의 필드는 단순히 비즈니스와 관련이 있습니다. –

+0

보안 요구 사항이 반드시 WSDL에 존재하지는 않습니다. 우리는 이와 같은 웹 서비스 엔드 포인트를 많이 보았습니다. 백엔드 또는 클라이언트에서 오류가 발생하는지 100 % 확신하려면 tcpmon 또는 wireshark 또는 이와 유사한 방법을 사용하여 네트워크 트래픽을 모니터링 할 수 있습니다. 이러한 도구를 사용하면 서버에서 정확한 텍스트를 다시 볼 수 있습니다. 하지만 실제로 soapUI가 당신에게 이미 보여준 것입니다. 저는 soapUI를 많이 사용했고 실제로 서버의 원시 응답을 보여 줬습니다. 당신이 게시 한 XML 응답에 soapUI가 보여준 것입니다. – davidfrancis

+0

자바 비누 - 웹 서비스는 사용자 이름과 비밀번호가 없거나 잘못되었을 때이를 반환합니다. 닷넷 클라이언트가 자바 비누 엔드 포인트에 게시하는 것을 보았습니다. –

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. 사용자 이름을 찾기위한 LDAP 쿼리가 다른 도메인 또는 글로벌 카탈로그를 찾고 있기 때문에 Datapower에서 사용자 이름을 찾을 수 없습니다.

아마도이 오류에 대한 다른 이유가있을 수 있지만이 오류가 발생했을 때 이것이 내 문제 였을 것입니다.

관련 문제