2013-01-17 14 views
5

Mam plik .WSDL od naszej firmy klienta, do którego muszę użyć, aby zadzwonić do usługi internetowej. Ich systemem jest SAP (SAP PI). Moja aplikacja to klient C# .NET 3.5 opracowany w VS 2008. Dodałem odwołanie do usługi w Visual Studio przy użyciu dostarczonego pliku .WSDL. Stworzyło to dla mnie klasę referencyjną do wywoływania ich usług i ustaw dla mnie kilka powiązań w pliku app.config.Wystąpienie nieautoryzowanego schematu uwierzytelniania z usługi WWW

Nie zmieniłem niczego w pliku app.config, ale utworzyłem kod, aby zadzwonić do ich usługi internetowej. Jednak gdy zadzwonię do ich usługi internetowej, otrzymuję następujący wyjątek:

Żądanie HTTP jest nieautoryzowane przy użyciu schematu uwierzytelniania klienta "Anonimowy". Nagłówek autentykacji odebrany z serwera to "Basic realm =" SAP NetWeaver Application Server ... "'.

(I zmodyfikowano nieznacznie ciąg używany w sekcji „Podstawowe sfera”, tak aby nie dać go.)

Nie app.config się poprawnie zbudowany z WSDL? Czy mam jakoś zmodyfikować plik app.config?

Czego próbowałem:

  • zmienił authenticationScheme w app.config od anonimowy Podstawowy
    (jak również wszystkich innych typów uwierzytelniania)
  • zmienionym ciąg realm w app.config, aby dopasować sfera w komunikacie wyjątków
  • zestaw login/pw pola w obiekcie ClientCredentials.Username w moim kodu

Wszelkie wskazówki i pomoc będą mile widziane.

Edycja: Po jakimś dochodzeniu, stwierdziliśmy, że Visual Studio ma kilka ostrzeżeń o polityce i polityki element przedłużający twierdzeń: ostrzeżenie narzędziowej

  • niestandardowe: Opcjonalny WSDL wewnętrzny element „polityki” z przestrzeni nazw " http://schemas.xmlsoap.org/ws/2004/09/policy "nie była obsługiwana przez .
  • Ostrzeżenie narzędzia niestandardowego: Następujące asercje strategii nie zostały zaimportowane:
    XPath: // wsdl: definicje [@ targetNamespace = 'urn: sap-com: document: sap: rfc: functions']/wsdl: binding [@ name = „”] Binding_FieldValidation twierdzenia ...

nie byłem w stanie dowiedzieć się, czy było to związane lub nie do mojego obecnego problemu z systemem uwierzytelniania. Wygląda na to, że jest spokrewniony, ale nie mogłem znaleźć żadnego rozwiązania, aby rozwiązać te ostrzeżenia. Wygląda na to, że WCF nie radzi sobie z instrukcjami we wsdl.

Odpowiedz

0

Większość usług SAP nie obsługuje anonimowości. Przepuść więc dane uwierzytelniające z połączenia. użytkownika i hasło biletów/X.509 ...

Jeśli wysyłasz dane uwierzytelniania z wezwaniem try to

Zapytaj faceta SAP zregenerować WSDL z Brak twierdzeń SAP, No polityka, SOAP 1.1. Możesz również spróbować i edytować WSDL ręcznie, aby usunąć dodatkowe zakłócenie ...

0

Jako punkt wyjścia, sprawdziłbym, czy możesz połączyć się z usługą z powodzeniem z podaną nazwą użytkownika i hasłem. Użyj czegoś takiego, jak SoapUI, aby sprawdzić, czy wszystko działa poprawnie - po prostu utwórz nowy projekt, zaimportuj WSDL dostarczony przez SAP PI, ustaw nazwę użytkownika i hasło i wykonaj połączenie. Prawdopodobnie uzyskasz pewną formę wyjątku z pustym ładunkiem, ale przynajmniej to potwierdzi, że nazwa użytkownika i hasło są poprawne.

Po sprawdzeniu, czy działa, sprawdź, czy aplikacja prawidłowo wywołuje usługę i czy wysyłane są nagłówki uwierzytelniania podstawowego HTTP. Możesz to potwierdzić, używając narzędzia do monitorowania sieci i sprawdzając, czy żądanie HTTP jest generowane poprawnie. Może to zrobić coś takiego jak netcat dla systemu Windows - wystarczy, że wysłucha portu na komputerze lokalnym, a następnie określi nazwę localhost i port jako punkt końcowy SOAP.

Po sprawdzeniu obu poprawne połączenie powinno zakończyć się pomyślnie.

0

Brakuje podstawowego nagłówka uwierzytelniania lub czegoś nieprawidłowego z poświadczeniami.

SAP PI zawsze domyślnie stosuje uwierzytelnianie podstawowe, jeśli usługa jest publikowana za pośrednictwem adaptera SOAP. Zbadałbym, czy WCF naprawdę wysyła ten nagłówek (np. Wskaż punkt końcowy klienta do bramy TCP i pozwól bramce TCP wskazać punkt końcowy SAP PI z pliku WSDL).

Informacje o ostrzeżeniach: AFAIK WSDL wygenerowany przez SAP PI zawsze będzie zawierał te znaczniki zasad, nie można tego naprawdę anulować. Jedyne, co możesz zrobić, to po prostu je wyrzucić, ponieważ nie są one w rzeczywistości zatwierdzone:

Powiązane problemy