@EVOSandru6

Почему может некорректно отрабатывать http аутентификация на сервере для soap сервиса?

Добрый день,

Выполнил построение 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 '' : ''

Как будто бы я не отправлял данных авторизации.

Подскажите - почему такое может быть?
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 1
ivankomolin
@ivankomolin
Вместо
parent::run();
Напишите
var_dump('+');die;

И посмотрите результат)

И кстати поаккуратнее с такими проверками паролей "=="
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы