Добрый день,
Выполнил построение wsdl структуры, без авторизации все отрабатывается, хочу воткнуть простейшую http авторизацию:
class SoapWebServiceAction extends CWebServiceAction
{
public function run()
{
header('Content-Type: text/xml; charset=utf-8');
$username = '123';
$passwd = '123';
header('X-HEADER : ' . $_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized: ' . $_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
echo "Вы должны ввести корректный логин и пароль для получения доступа к ресурсу";
exit;
} else {
if ($username == $_SERVER['PHP_AUTH_USER'] && $passwd == $_SERVER['PHP_AUTH_PW']) {
parent::run();
}
else {
throw new Exception($_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
}
}
}
...
}
1. Проверяю через программу
soapui. Ввожу адрес сервиса, ввожу данные доступа, получаю список методов с шаблоном для запроса.
2. Для запросов также для каждого метода вводить данные авторизации. Сделал.
Если ввожу неправильные данные - 99, 888, то ловлю ожидаемо:
99:888 из блока:
throw new Exception($_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
Тут все понятно, авторизационные данные не верны, но если я ввожу правильные (123, 123) данные, то ловлю ('' - пустоты):
HTTP/1.0 401 '' : ''
Как будто бы я не отправлял данных авторизации.
Подскажите - почему такое может быть?