Как заставить базовую HTTP-аутентификацию работать для приложения Apigility?

Я настроил Basic Auth как в Документ о Apigility описано (документ больше не актуален, но основные этапы остались прежними). Итак, я создал users.htpasswd файл и добавил адаптер аутентификации. мой /config/autoload/local.php был обновлен и получил конфиги адаптера:

return array(
...
'zf-mvc-auth' => array(
'authentication' => array(
'adapters' => array(
'dummy basic auth' => array(
'adapter' => 'ZF\\MvcAuth\\Authentication\\HttpAdapter',
'options' => array(
'accept_schemes' => array(
0 => 'basic',
),
'realm' => 'Dummy Realm',
'htpasswd' => 'data/users.htpasswd',
),
),
),
),
),
);

Все идет нормально:

Test: I sent a `GET` request got the data just like before the auth setup.
Expected: `200 OK`
Result: `200 OK`
OK

Затем я пошел в Apigility Admin Backend -> My API -> My Rest Service -> Authorization и отметил методы и конечные точки, для которых я хочу требовать авторизацию.

Test: I sent a new request without credentials / authentication token.
Expected: `403 Forbidden`
Result: `403 Forbidden`
OK

Test: I sent another request with wrong credentials / authentication token.
Expected: `401 Unauthorized`
Result: `403 Forbidden`
FAIL

Test: I sent a request with correct credentials / authentication token.
Expected: `200 OK`
Result: `403 Forbidden`
FAIL

Что я делаю неправильно? Как заставить работать обычную HTTP-аутентификацию?

0

Решение

Начиная с новой версии Apigility (точно не знаю, какая именно, но больше 1.0) появилась возможность создавать несколько адаптеров Auth и связывать каждый API с различным адаптером Auth.

Если вы создали адаптер авторизации (Аутентификация сверху -> Адаптеры -> Новый адаптер), у вас будет имя адаптера для HTTP Basic, который вы настроили. Имейте это в виду.

Затем перейдите в свой API (тот, который соответствует имени модуля, который содержит ваши ресурсы, а не отдельные ресурсы). На этом экране вы увидите «Аутентификация» в левом верхнем углу с выпадающим меню.

Auth Adapter Picker

В раскрывающемся списке выберите созданный вами адаптер аутентификации и сохраните свой выбор. Ваши ресурсы в этом API теперь должны правильно реагировать в зависимости от того, аутентифицированы вы или нет.

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector