Тесты доступности: возможно ли HTTP-пинговать конечную точку с включенным AAD?

Чтобы лучше понять, а затем внедрить его в наши проекты, я создал приложение-функция с 3 конечными точками (исходный код в эту суть) и настроить 6 тестов доступности (типа Ping Test):

oktest: https://myfuncname.azurewebsites.net/api/ok (parse dependent requests = false)
oktest2: https://myfuncname.azurewebsites.net/api/ok (parse dependent requests = true)
badtest: https://myfuncname.azurewebsites.net/api/bad (parse dependent requests = false)
badtest2: https://myfuncname.azurewebsites.net/api/bad (parse dependent requests = true)
errtest: https://myfuncname.azurewebsites.net/api/err (parse dependent requests = false)
errtest2: https://myfuncname.azurewebsites.net/api/err (parse dependent requests = true)

Приложение-функция настроено с помощью AAD с использованием идентификатора клиента и разрешенных аудиторий токенов.

/ok returns 200 content OK
/bad returns 400 content BAD
/err returns 500

Тестирование конечных точек Azure с помощью Postman (с использованием действительного токена носителя) дает ожидаемые результаты, как и в локальной среде размещения.

Я ожидаю 100%-й успех в oktest и oktest2 и 100%-й сбой в других тестах.

Я получаю следующие результаты:

oktest: success 21 fail 0
oktest2: success 17 fail 0
badtest: success 20 fail 2
badtest2: success 17 fail 0
errtest: success 21 fail 1
errtest2: success 17 fail 0

Затем я устанавливаю для аутентификации значение Разрешить анонимность и получаю следующие результаты после некоторого цикла:

oktest: success 31 fail 0
oktest2: success 36 fail 0
badtest: success 29 fail 9
badtest2: success 25 fail 8
errtest: success 28 fail 8
errtest2: success 24 fail 7

Совершенно очевидно, что первые настройки аутентификации предотвращали HTTP-пингование конечных точек. Возможно ли сохранить аутентификацию AAD или нам нужно переосмыслить нашу сетевую архитектуру?

Любая помощь или предложение будут очень признательны!

С уважением, Джакомо С.С.




Ответы (1)


Кажется, я понял ситуацию.

Когда Разрешить анонимный доступ включен, HTTP-пинг корректно завершается сбоем в «плохом тесте»:

введите здесь описание изображения

Когда аутентификация AAD включена, HTTP-ping возвращает успешный результат, потому что тест доступности может пройти аутентификацию, а затем возвращает 200 OK для этого (успешная аутентификация):

введите здесь описание изображения

Глядя на эти детали, можно объяснить любой отдельный результат.

Мой вывод: Тесты доступности больше ориентированы на тестирование веб-страниц, а не служб REST.

Подтверждения можно найти в документах MS.

Если у кого-то есть, что добавить, мне очень интересно!

person gsscoder    schedule 19.03.2021