Podłączanie się z PHP do Microsoft Web Services za pomocą NTLM z autoryzacją domenową


8 października 2020 / Michał Kortas


Jakiś czas temu potrzebowałem z poziomu PHP podłączyć się do Web Service, aby dobrać się do danych serwowanych przez Microsoft Dynamics NAV (obecnie Dynamics 365 Business Central). Wszystko byłoby proste gdyby nie kilka punktów, które zatrzymały mnie w miejscu: pierwszy mój kontakt z SOAP oraz konieczność uwierzytelniania NTLM użytkownikiem utworzonym z poziomu Active Directory. Na szczęście kolega (dzięki, Rafał!) uratował mnie pewnym linkiem, który naprowadził mnie na rozwiązanie problemu.

Wspomniany link nie jest już dostępny publicznie, nie mogę niestety podłączyć go do tego wpisu.

Napisałem prostą paczkę dla Laravela, która rozwiązuje problem logowania do Web Service. Nadpisuje ona natywną klasę SoapClient, aby przesłać do niego parametry logowania w formie domena\użytkownik oraz hasło.

Jak używać paczki?

Instalujemy ją z poziomu composera.

Dla ułatwienia możemy podpiąć własny alias w config/app.php.

Podajemy parametry autoryzujące użytkownika w pliku .env.

Łączymy się z Web Service. Po zainicjowaniu połączenia możemy wykonywać dostępne tam metody w standardowy sposób, na jaki pozwala klasa SoapClient.

Pozostałe możliwości

Pozostałe parametry opisałem w repozytorium paczki na GitHubie.

  1. Zmiana parametrów autoryzacji dla danego połącznia
  2. Dodawanie nagłówków
  3. Pobieranie wyniku ostatniego żądania

Tagi:


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *