EvoMaster 认证配置完全指南:如何模糊测试需要登录的 API(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
EvoMaster 认证配置是让模糊测试工具顺利通过登录校验的关键一步。作为全球首款开源 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: "username=admin&password=1234" 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 List<AuthenticationDto> getInfoForAuthentication() { return Arrays.asList( AuthUtils.getForBasic("admin", "admin", "1234"), AuthUtils.getForDefaultSpringFormLogin("user", "user", "1234", "/login") ); }生成测试时,EvoMaster 会自动选择合适用户的凭证,并生成合法的 HTTP 头。
Token 与 Cookie 全解析:登录认证核心机制
理解 EvoMaster 对两种凭证的处理机制,是配置成功的关键。
Cookie 会话登录流程
getForDefaultSpringFormLogin()走的是表单登录链路:先 POSTusername与password到登录端点,设置expectCookies=true,登录成功后把返回的会话 Cookie 附加到后续所有请求上。这是 Spring Security 默认表单登录的标准姿势。
Token 提取与注入机制
对于 JWT 等 Token 方案,AuthUtils提供现成方法,例如getForJWT、getForJsonTokenBearer:
AuthUtils.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),仅供参考