Как я могу получить мой PHP SoapClient для аутентификации с дайджестом

В настоящее время у меня есть веб-сервис vb.net ASMX, размещенный на IIS, и страница PHP, которая вызывает веб-сервис через SoapClient.

Мне нужно аутентифицировать веб-сервис на ActiveDirectory, и я решил, что самый простой способ сделать это — включить дайджест-аутентификацию на IIS и позволить пользователю ввести свое имя пользователя / пароль AD на странице PHP и отправить эту аутентификацию в SoapHeaders.

Я не совсем уверен, как это сделать, особенно когда пытаюсь связаться с WSDL (который также стоит за дайджест-аутентификацией).

Любая помощь будет оценена.

Спасибо

РЕДАКТИРОВАТЬ: Что я пробовал:

SERVICE_URL указывает на HTTP: //mypage/service.asmx WSDL

Попытка 1: пользователь и передать как MD5

$options = array(
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'realm' => 'myrealm',
'login' => $_SESSION['authUser'],
'password' => $_SESSION['authPass']
);
try { $client = new SoapClient(SERVICE_URL, $options); }

Попытка 2: Auth — это «user»: «realm»: «pass» как MD5:

$options = array(
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'login' => $_SESSION['auth']
);
try { $client = new SoapClient(SERVICE_URL, $options); }

1

Решение

Вы можете добавить заголовки в ваш мыльный клиент, используя SoapHeader() класс / объект (Документация SoapHeader ()) и оператор мыльного объекта __setSoapHeaders() (__setSoapHeaders () документация).

Ваш запрос будет выглядеть примерно так:

<?php

$options = array(
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'realm' => 'myrealm',
'login' => $_SESSION['authUser'],
'password' => $_SESSION['authPass']
);
try {
$client = new SoapClient(SERVICE_URL, $options);

// create and populate header array
$headers = array();
$headers[] = new SoapHeader('MYNAMESPACE',
'authentication',
'SOAP_AUTHENTICATION_DIGEST');
$headers[] = new SoapHeader('MYNAMESPACE',
'realm',
'myrealm');

$client->__setSoapHeaders($headers); // set headers
$client->__soapCall("echoVoid", null); // make soap call
}

?>
0

Другие решения

Других решений пока нет …