【问题标题】:Set authentication header in zap docker based API scan在基于 zap docker 的 API 扫描中设置身份验证标头
【发布时间】:2022-01-22 21:42:07
【问题描述】:

我正在尝试在 zap docker 映像中使用 zap api 扫描。 API 已通过 OIDC 身份验证。使用“Graal.js”脚本执行身份验证,并使用org.zaproxy.zap.extension.script.ScriptVars.setGlobalVar("accessToken",accessToken);将访问令牌设置为全局变量

使用 httpSender 脚本将访问令牌设置为授权标头值。在 zap 桌面中,它是使用“Oracle Nashorn”引擎完成的。但在 zap docker 中,“Oracle Nashorn”引擎不可用。

我曾尝试使用 Graal.js 引擎本身,但由于 JS 引擎不允许多线程而失败。 设置标题的其他方法是什么?

【问题讨论】:

    标签: zap


    【解决方案1】:

    为什么不直接使用 ZAP 原生支持的身份验证环境变量?

    • ZAP_AUTH_HEADER_VALUE - 如果已定义,则其值将作为标头添加到所有请求中
    • ZAP_AUTH_HEADER - 如果已定义,则其值将用作标头名称 - 如果未定义,则将使用标准授权标头
    • ZAP_AUTH_HEADER_SITE - 如果已定义,则标头将仅包含在名称包含其值的站点中

    所有记录在https://www.zaproxy.org/docs/authentication/handling-auth-yourself/

    【讨论】:

    • 感谢您的及时回复@Simon。我忘了提到我还有几个要设置的标头值。这就是我选择使用 httpSender 脚本的原因。
    • 在这种情况下,您可以使用替换规则 zaproxy.org/docs/desktop/addons/replacer 或用我们支持的任何其他语言重写您的脚本,例如 jython、jruby、kotlin、zest ......我们有一些例子在github.com/zaproxy/community-scripts/tree/main/httpsender - 注意默认情况下只安装了zest,其他脚本语言需要安装
    最近更新 更多