2013-01-17 2 views
5

웹 서비스를 호출 할 때 사용해야하는 클라이언트 회사의 .WSDL 파일이 있습니다. 그들의 시스템은 SAP (SAP PI)입니다. 내 응용 프로그램은 VS 2008에서 개발 된 C# .NET 3.5 클라이언트입니다. Visual Studio에서 제공된 .WSDL 파일을 사용하여 서비스 참조를 추가했습니다. 이것으로 나 자신의 서비스를 호출하는 데 사용할 참조 클래스를 만들고 app.config 파일에 여러 개의 바인딩을 설정했습니다.웹 서비스에서 인증되지 않은 인증 방식을 만남

app.config 파일에서 아무 것도 변경하지 않았지만 코드를 작성하여 웹 서비스를 호출했습니다. 그러나 웹 서비스를 호출하면 다음과 같은 예외가 발생합니다.

HTTP 요청은 '익명'클라이언트 인증 구성표와 함께 인증되지 않았습니다. 서버에서받은 인증 헤더는 '기본 영역 = "SAP NetWeaver Application Server ..."입니다.

의 app.config는 WSDL에서 제대로 구축되지 않았다 (나는 약간을 포기하지 않도록. '기본 영역'섹션에 사용되는 문자열을 수정)? app.config 파일을 어떻게 든 수정해야합니까?

것들 나는 시도했다 :

  • 기본
    (뿐만 아니라 다른 모든 인증 유형) 일치의 app.config에서
  • 변경된 영역 문자열로 익명에서의 app.config에 authenticationScheme 변경 예외 메시지에서 영역
  • 설정된 사용자 이름/PW 내 코드에서 ClientCredentials.Username 객체의 필드

모든 포인터 또는 도움을 주시면 감사하겠습니다.

편집 :

  • 사용자 정의 도구 경고 : 좀 더 조사 후, 나는 비주얼 스튜디오가 확장 요소 정책 및 정책 주장에 대한 경고의 의미가 있음을 발견 네임 스페이스에서 옵션 WSDL 확장 요소 '정책' 를 ' http://schemas.xmlsoap.org/ws/2004/09/policy '가 처리되지 않았습니다.
  • 사용자 정의 도구 경고 : 다음 정책 어설 션은 수입되지 않은 :
    의 XPath : // WSDL : 정의 [@의 targetNamespace = '항아리 : 수액 닷컴 : 문서 : 수액 : RFC : 기능']/WSDL : [바인딩 @ 나는이이 인증 체계 내 현재의 문제와 관련 또는되지 않은 경우 알아낼 수 않네

... : = 'Binding_FieldValidation'] 어설 이름을 지정합니다. 관련이있는 것 같지만 이러한 정책 경고를 해결하기위한 해결책을 찾지 못했습니다. WCF가 wsdl의 문장을 잘 처리하지 못하는 것 같습니다.

답변

0

대부분의 SAP 서비스는 익명을 지원하지 않습니다. 그래서 호출과 함께 인증 데이터 형식을 전달하십시오. 사용자 및 암호/X.509 티켓 ... 당신은 전화로 인증 데이터를 전송하는 경우

은이

가 아무 SAP의 주장을 WSDL을 다시 생성하지하기 위해 SAP 사람에게 물어보십시오 정책 없음, SOAP 1.1. 또한 수동으로 WSDL을 편집 해보십시오.

0

시작 지점에서 제공된 사용자 이름과 암호로 서비스를 성공적으로 호출 할 수 있는지 확인합니다. SoapUI과 같은 것을 사용하면 모든 것이 올바르게 작동하는지 테스트 할 수 있습니다. 새 프로젝트를 만들고, SAP PI가 제공하는 WSDL을 가져 와서 사용자 이름과 암호를 설정하고 호출을 실행하십시오. 비어있는 페이로드에서는 예외가 발생하지만 적어도 사용자 이름과 암호가 올바른지 확인합니다.

제대로 작동하는지 확인한 후 응용 프로그램이 서비스를 올바르게 호출하고 http 기본 인증 헤더가 전송되고 있는지 확인하십시오. 네트워크 모니터링 도구를 사용하고 http 요청이 올바르게 생성되는지 확인하여이를 확인할 수 있습니다. Windows 용 netcat과 같은 기능을 사용하면 로컬 시스템의 포트를 수신하도록 설정 한 다음 localhost와 포트를 SOAP 엔드 포인트로 지정할 수 있습니다.

모두 올바른지 확인한 후에는 통화가 성공해야합니다.

0

기본 인증 헤더가 없거나 자격 증명이있는 이 틀려 있어야합니다.

서비스가 SOAP 어댑터를 통해 게시 된 경우 SAP PI는 항상 기본 인증으로 기본 설정됩니다. WCF가 실제로 헤더를 발송하는지 (예 : 클라이언트 엔드 포인트를 TCP 게이트웨이로 지정하고 TCP 게이트웨이가 WSDL에서 SAP PI 엔드 포인트를 가리 키도록) 조사합니다.

경고 : AFAIK에 대해 SAP PI에서 생성 된 WSDL에는 항상 이러한 정책 태그가 포함되어 있습니다. 실제로는이 태그를 사용할 수 없습니다. 할 수있는 일은 실제로 유효성이 확인되지 않았기 때문에 던져 버리는 것입니다.

관련 문제