Да, и у нас есть часто задаваемые вопросы для этого: https://github.com/zaproxy/zaproxy/wiki/FAQformauth
Трудно отлаживать проблемы при использовании только API, поэтому я рекомендую сначала использовать пользовательский интерфейс, а после того, как вы это заработаете, преобразовать то, что вы сделали, в API.
Через пользовательский интерфейс:
- Элемент списка
- Исследуйте свое приложение при прокси через ZAP
- Войти, используя действительное имя пользователя и пароль
- Определите контекст, например, щелкнув правой кнопкой мыши верхний узел вашего приложения на вкладке Сайты и выбрав «Включить в контекст»
- Найдите «Запрос на вход» на вкладке «Сайты или история»
- Щелкните правой кнопкой мыши и выберите «Пометить как контекст» / «Запрос авторизации на основе формы»
- Убедитесь, что параметры имени пользователя и пароля установлены правильно - они почти наверняка не будут!
- Найти строку в ответе, которая может использоваться для определения, вошел ли пользователь в систему или нет
- Выделите эту строку, щелкните правой кнопкой мыши и выберите «Отметить как контекст» / «Индикатор входа / выхода» в зависимости от ситуации - вам нужно установить только один из них, а не оба
- Дважды щелкните по соответствующему узлу Context и перейдите на страницу «Пользователи» - проверьте правильность данных пользователя, добавьте всех остальных пользователей, которых вы хотите использовать, и включите их все
- Перейдите на страницу контекста «Принудительный пользователь» и убедитесь, что выбран пользователь, которого вы хотите протестировать
- Теперь должна быть включена кнопка «Принудительный режим пользователя - нажмите, чтобы включить»
- Нажатие этой кнопки заставит ZAP повторно отправить запрос на аутентификацию, когда обнаружит, что пользователь больше не вошел в систему, т. Е. С помощью индикатора «вошел в систему» или «вышел из системы».
Через API процесс такой же, но с использованием вызовов API:
context/includeInContext
authentication/setAuthenticationMethod
authMethodName : formBasedAuthentication
authMethodConfigParams : loginUrl=http://example.com/login.html&loginRequestData=username%3D%7B%25username%25%7D%26password%3D%7B%25password%25%7D
authentication/setLoginIndicator or setLogoutIndicator
forcedUser/setForcedUserModeEnabled
Значения параметров authMethodConfigParams должны быть закодированы в URL, в этом случае loginRequestData - это имя пользователя = {% username%} & password = {% password%}