如何在 zap API 客户端中将身份验证方法设置为基于 POST 请求数据的 json?

How to set up authentication method as json based POST request Data in zap API client?

我正在编写一个 python 客户端来测试使用 zap 客户端库的网络应用程序。由于在稳定的 zap 版本中不支持基于 json 的身份验证方法,我现在正在使用 live zap 容器。

在 python 客户端中,我尝试了以下操作:

login_config_params = ''.join(("loginUrl=https://x.x.x.x/login/&loginRequestData=",
                           urllib.parse.quote_plus("{\"username\":\"xxxxx\",\"password\":\"xxxxx\"}")))


zap.authentication.set_authentication_method(context_id, "jsonBasedAuthentication", authmethodconfigparams=login_config_params, apikey=apikey)

执行此操作时,我没有在容器中看到任何关于成功设置的日志。

请帮我检查一下是否一切正常并准备好继续

仅使用 API.

时,确定身份验证设置是否正确可能会很棘手

我建议使用 ZAP UI 进行测试,因为这样您可以更轻松地查看发生了什么 - 您仍然可以使用 API 来配置 ZAP,但您还可以看到使 debugginf 更容易的请求和响应。

大多数 REST/JSON 类型的 API 使用某种授权 header,因此您应该查看您的应用使用的内容,并模仿它。然后将这些 header 添加到每个请求中。例如,如果您有一个 cookie 和一个授权 header:

zap.replacer.add_rule('Auth Header', True, 'REQ_HEADER', False, 'Authorization', 'Bearer ' + auth_token) zap.replacer.add_rule('Cookie', True, 'REQ_HEADER', False, 'Cookie', 'SESSIONID=' + sessionid)

这些将包含在每个后续扫描请求中。