ZAP не авторизован на сервере Angular + C# - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь узнать, как использовать ZAP, и у меня возникла проблема с аутентификацией.

Я использую локальный веб-сайт angular (порт 4200), который вызывает локальный API C# (порт 8080) , API - это приложение windows, работающее через IIS. В Chrome я направляю запросы с использованием прокси SwitchySharp на порт 8082, порт ZAP с «Нет прокси для: <-loopback>», чтобы разрешить прокси на локальном хосте.

Я обслуживаю свое приложение angular и могу перейти к и запустить его в Chrome без проблем. Однако на вкладке истории ZAP я получаю сообщения «401 неавторизовано» рядом с любыми запросами GET на мой локальный сервер API (запросы OPTIONS дают ответ 200, но имеют размер ответа 0 байт?).

В ZAP я имею включил localhost. * в контекст, переключил аутентификацию контекста на NTLM (hostname = localhost: 80?), добавил мой пользователь / пароль для пользователей контекста и включил значок «Принудительный пользователь» в верхней правой панели инструментов. Spider / Scanning не возвращает никаких результатов, и хотя просмотр работает нормально, в сообщениях истории ZAP он отображается как 401.

Есть идеи, как я могу сканировать?

1 Ответ

0 голосов
/ 25 февраля 2020

Хорошо, поэтому у меня возникла проблема с моим прокси. Вот мои настройки:

Контекст ZAP по умолчанию

  • Аутентификация = HTML / NTLM с именем хоста = localhost, порт = 80
  • Пользователи = Добавить моего пользователя / пароль
  • Включить в контекст: локальное приложение клиента и API (http://localhost. *)

ZAP

  • Принудительный пользователь включен (на правой верхней панели инструментов щелкнул замок)

Переключатель прокси

  • Профиль = ZAP, Ручная настройка = "localhost" в качестве прокси HTTP, порт = 8082 (это где ZAP прослушивает, нуждается в настройке где-то в ZAP, а также доверяет сертификату ZAP), No Proxy для «<-loopback>» (разрешает проксирование на локальном хосте)
  • Правила переключения: «http://localhost* ", Шаблон подстановки, маршруты к профилю ZAP. Именно здесь я запутался, потому что маршрутизировал только свое клиентское приложение («http://localhost: 4200 *»), что вызывало проблемы с аутентификацией для моего API
...