公司动态
EvoMaster 认证配置完全指南:如何模糊测试需要登录的 API(Token 与 Cookie 全解析)
EvoMaster 认证配置完全指南如何模糊测试需要登录的 APIToken 与 Cookie 全解析【免费下载链接】EvoMasterThe first open-source AI-driven tool for automatically generating system-level test cases (also known as fuzzing) for web/enterprise applications. Currently targeting whitebox and blackbox testing of Web APIs, like REST, GraphQL and RPC (e.g., gRPC and Thrift).项目地址: https://gitcode.com/gh_mirrors/ev/EvoMasterEvoMaster 认证配置是让模糊测试工具顺利通过登录校验的关键一步。作为全球首款开源 AI 驱动的系统级测试用例自动生成工具EvoMaster 专门用于对 REST、GraphQL、gRPC、Thrift 等 Web API 进行自动化模糊测试。当被测接口需要登录时只有正确配置 Token 与 Cookie 认证信息EvoMaster 才能在带认证的状态下探索 API 深层逻辑发现更多真实故障。为什么模糊测试必须先解决认证问题大多数企业级 API 都依赖 Spring Security 等框架做权限控制。如果 EvoMaster 发出的请求没有携带合法凭证会被直接拦截返回 401/403导致覆盖率停留在登录页根本触碰不到核心业务逻辑。因此在启动模糊测试之前完成认证配置是提高 API 测试覆盖率的前提。EvoMaster 的认证配置按测试模式分为两条路线黑盒测试与白盒测试下面分别给出最快配置方法。黑盒测试认证配置三种最简做法黑盒模式下EvoMaster 看不到被测系统内部代码认证信息只能通过外部配置传入具体可参考官方文档 auth.md 与 blackbox.md。方式一静态 Header 直传 Token从 1.3.0 版本起可用命令行参数--header0到--header2直接指定 HTTP 头适合 Basic 认证或固定 Token--header0 Authorization: Basic dXNlcjpwYXNz这种方式最简单但只适合凭证长期不变的情况详见参数说明 options.md。如果 Token 会过期请用下面两种声明式方案。方式二声明式登录端点配置从 2.1.0 版本开始支持在配置文件默认./em.yaml也支持 TOML中声明登录接口的调用方式以及如何从响应中提取认证信息。配置大致如下auth: - name: admin loginEndpoint: endpoint: /login verb: POST contentType: application/x-www-form-urlencoded payloadRaw: usernameadminpassword1234 expectCookies: trueEvoMaster 会先自动调用该登录端点获取 Cookie再携带 Cookie 访问受保护接口。方式三WFC 认证格式从 4.0.0 版本起黑盒测试全面支持 WFC 认证配置格式表达能力更强适合复杂的多步登录与 Token 提取场景是目前官方推荐的最新方式。白盒测试认证配置在 Driver 中注入凭证白盒模式下除了复用上述黑盒配置还可以直接在 driver 类中实现getInfoForAuthentication()方法返回一组AuthenticationDto具体写法参见 write_driver.md。使用 AuthUtils 快速生成认证对象官方提供了工具类AuthUtils位于client-java/controller/src/main/java/org/evomaster/client/java/controller/AuthUtils.java几行代码即可完成配置Override public ListAuthenticationDto getInfoForAuthentication() { return Arrays.asList( AuthUtils.getForBasic(admin, admin, 1234), AuthUtils.getForDefaultSpringFormLogin(user, user, 1234, /login) ); }生成测试时EvoMaster 会自动选择合适用户的凭证并生成合法的 HTTP 头。Token 与 Cookie 全解析登录认证核心机制理解 EvoMaster 对两种凭证的处理机制是配置成功的关键。Cookie 会话登录流程getForDefaultSpringFormLogin()走的是表单登录链路先 POSTusername与password到登录端点设置expectCookiestrue登录成功后把返回的会话 Cookie 附加到后续所有请求上。这是 Spring Security 默认表单登录的标准姿势。Token 提取与注入机制对于 JWT 等 Token 方案AuthUtils提供现成方法例如getForJWT、getForJsonTokenBearerAuthUtils.getForJWT(admin, /api/login, {\user\:\admin\,\pass\:\1234\}, token);其底层通过TokenHandling指定从响应体BODY的哪个字段提取 Token再以Authorization: JWT {token}或Bearer的形式注入后续请求头完整实现可查阅AuthUtils.java中的getForJsonToken方法。认证配置避坑指南三个高频问题数据库密码无法逆向EvoMaster 可以读取 SQL 数据库内容但无法破解哈希密码必须通过getInfoForAuthentication()提供明文凭证。重置状态会清掉账号如果resetStateOfSUT()会重置数据库记得用init_db.sql脚本重建登录账号否则认证会失效。Token 过期问题短生命周期的 Token 建议改用声明式登录端点配置让 EvoMaster 在测试过程中动态获取新 Token而不是手工刷新。快速上手指南三步完成认证模糊测试克隆项目仓库git clone https://gitcode.com/gh_mirrors/ev/EvoMaster根据测试模式选择配置方式黑盒用--header0或声明式配置白盒实现getInfoForAuthentication()运行模糊测试并打开生成的测试报告如上图重点观察 4XX/5XX 响应与故障列表验证认证是否生效配置好认证后EvoMaster 就能像真实用户一样登录并深入测试你的 API。从静态 Header 到动态 Token、Cookie三种方式覆盖了绝大多数企业级认证场景现在就可以在你的项目上实践起来。【免费下载链接】EvoMasterThe first open-source AI-driven tool for automatically generating system-level test cases (also known as fuzzing) for web/enterprise applications. Currently targeting whitebox and blackbox testing of Web APIs, like REST, GraphQL and RPC (e.g., gRPC and Thrift).项目地址: https://gitcode.com/gh_mirrors/ev/EvoMaster创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考