身份认证测试会追踪凭据和会话在认证、恢复、过期、撤销等事件中的状态变化,并核对每次变化后的服务端状态及其证据。确认“是谁”和判断“这个身份能做什么”是两件事。

为什么需要这个 Skill

登录成功页无法说明退出后旧会话是否仍有效、过期链接能否再次创建会话,或恢复渠道怎样影响多因素认证。这些问题依赖产品自己的规则;常见安全惯例不能替代已提供的策略。

Skill 用来做什么

身份认证测试 Skill 会根据凭据、身份状态、失败路径和生命周期整理可复核场景,并根据脱敏需求、令牌元数据、会话记录、审计事件与现有报告,准备验证候选。

Awesome QA Skills: https://github.com/naodeng/awesome-qa-skills 按语言和测试阶段组织 Skill。系列总览:https://inaodeng.com/zh-cn/blog/ai-testing/introduction_of_awesome_qa_skills/ 介绍通用安装方式;本文聚焦身份验证和凭据生命周期。

建模状态迁移,而不只看登录表单

状态要根据已提供的认证机制确定。密码、邮件链接、MFA 挑战、联邦断言和恢复令牌可能适用不同规则,不要自行推断哪些方式必须启用或凭据有效多久。

事件或状态要比较的证据应由策略回答的问题
未认证 → 挑战中挑战是否签发、接收方或因子、请求上下文适用哪种机制和触发条件?
挑战中 → 已认证服务端状态、新签发会话或令牌元数据怎样才算挑战完成?
已认证 → 过期、锁定或撤销当前会话状态与先前凭据是否仍有效哪种事件会结束或限制该身份?
恢复 → 已认证恢复凭据、替代凭据、通知和审计事件恢复要遵循哪些控制,何时结束?

源 Skill 还要求核对凭据创建、轮换、过期、撤销和重放规则。对照每个已提供事件前后的认证状态、令牌签发情况和旧凭据有效性。身份认证不能替代资源授权:身份有效不等于有权修改收款账户或执行其他资源操作。

建模风险前先审计证据

Prompt 要求记录六种输入状态。身份认证的缺口经常涉及策略、状态迁移或证据来源。

状态示例处理方式
known / 已知带版本的需求写明修改收款账户前要触发 MFA引用需求和生效版本
missing / 缺失未说明令牌有效期、链接能否重用或退出后的行为暂不确定预期结果
conflicting / 冲突UI 文案与服务端策略给出不同过期规则保留双方来源,交由负责人处理
stale / 过期旧令牌报告对应已替换的身份服务不当作当前生命周期证据
out_of_scope / 范围外本轮排除修改他人收款账户的资源授权问题与身份验证范围分开记录
assumptions / 假设草稿暂时假设可在测试夹具中签发恢复链接说明保留假设所需的负责人和验证

将脱敏后的身份状态、令牌元数据与秘密凭据值分开。仅凭登录截图,无法证明服务端认证状态,也无法证明旧凭据已失效。

示例:邮件免密登录与升级 MFA

考虑一个设计请求:用户通过邮件链接免密登录,在修改收款账户前需要升级 MFA。请求尚未说明链接有效期、能否单次使用、是否绑定设备、锁定阈值,或退出会撤销哪些状态。这些都仍是策略问题;本例不声称存在漏洞,也不描述已执行的测试。

AUT-01 候选发现:邮件认证链接重放

只有当提供的需求明确规定链接单次使用或其他重放规则时,才适用此候选项。

发现字段示例记录
对象与适用条件邮件认证链接;仅当来源定义了接收者、过期时间、重用规则和设备绑定时适用
前置条件与刺激已获批准的隔离测试身份和有策略依据的已签发链接;第一次接受后,另一个会话尝试重用。这是建议场景,Skill 并未执行操作。
预期关注点与证据若合同规定单次使用,就确认重用是否能创建新的认证状态或会话。比较服务端状态、脱敏令牌元数据、先前会话有效性和审计事件;没有日志不能推断为绕过。
来源与证据状态示例请求没有提供策略、服务日志或运行记录;补齐前标为 UNASSESSED
影响、优先级和负责人结合受保护的账户操作和产品范围评估影响,证据齐全前不定优先级;交由身份认证或安全测试负责人处理
停止条件若策略冲突、涉及生产身份或个人凭据,或观察到意外认证状态,立即停止并升级
验证与关闭条件获得单独授权的执行者可在隔离环境中验证规则,不暴露凭据值。只有预期状态迁移、证据来源、负责人和残余风险均可复核时,才能关闭。

Skill 不会登录系统、调用真实 API、读取凭据或执行这个候选场景。它给出的是带有明确条件的验证建议,不能证明链接可被重放,也不能证明重放已被阻止。

把恢复和账户枚举风险留在范围内

恢复流程可能签发或替换凭据、改变会话并通知身份所有者。应建模恢复后哪些状态需要变化,以及旧会话或令牌是否仍有效;判断必须依据已提供策略。若没有恢复合同,就把状态迁移记为缺失。

如果需求定义了已存在账户和不存在账户的不同响应,应按文档要求比较响应和时序证据。缺少证据时,账户枚举只是风险候选;不要仅凭惯例判断为已确认漏洞。

交接生命周期证据

每个候选项都要交付来源规则、适用范围、前置条件、触发动作、预期关注点、证据状态、影响和优先级理由、负责人、停止条件、关闭条件及验证方法。分开呈现事实、证据支持的推断、候选建议和 Human 决策。风险接受、例外授权和发布判断由负责人决定。

怎样准备可用的输入

提供本轮涉及的认证机制、角色、身份状态、相关策略版本、环境边界、脱敏后的令牌或会话元数据、审计证据和已知缺口,不要附带真实凭据。输入不完整时,先交付有边界的状态模型,并指出继续分析最需要的策略或产物。

和其他 Skill 配合

常见错误

  1. 把身份认证当作资源授权的替代品。
  2. 没有来源就假设令牌有效期、MFA 策略、重放规则或锁定阈值。
  3. 只看首次登录,忽略过期、撤销、恢复或旧会话。
  4. 把候选或静态评审当成已确认攻击,或把没有发现写成系统安全。

安装与调用

npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh --skill authentication-testing

安装说明与排查方式:

工具支持 Agent Skills 自动发现时,可以直接描述任务;如果工具支持显式调用,按它自己的语法指定 authentication-testing。提供策略来源与版本、认证机制、身份状态、脱敏后的会话或令牌元数据、审计证据和环境边界。不要粘贴真实凭据。这个 Skill 只做静态分析和验证准备,不会登录或执行认证。

例如:

请使用 authentication-testing 复核以下邮件链接登录和 MFA 升级流程。
策略来源与版本:[填写]
认证机制与适用范围:[填写]
身份状态、脱敏令牌/会话元数据和审计证据:[填写]
测试环境与限制:[填写;不提供真实凭据,不访问生产系统]
请输出认证状态迁移、凭据生命周期和 AUT-## 候选发现。区分已知事实、待确认规则、验证建议和 Human 决策。

常见问题

身份认证测试会判断用户能不能修改收款账户吗?

不会。身份认证用于验证身份;授权规则和交易策略决定该身份可以执行哪些操作。

邮件链接的有效期或重用规则缺失怎么办?

先不定义预期结果,把相关项标为未评估,并向策略负责人请求继续分析所需的最小来源。

只有登录截图,能完成认证评审吗?

不能。截图不能证明服务端认证状态、令牌签发或旧凭据是否已失效;还需要策略、脱敏后的状态材料和相应审计证据。

参考

调用 Skill 前先阅读身份认证测试 Prompt: https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-types/authentication-testing/prompts/authentication-testing.md,其中定义 AUT-## 场景、证据边界和发现合同。源目录:https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-types/authentication-testing;包含入口文件和配套资料。

分享