首页/开发/软件测试速查/接口鉴权与授权测试

接口鉴权与授权测试

鉴权与授权测试矩阵:无凭证(401)、无效凭证(401)、有效但无权限(403)、对象级越权(换 ID 访问他人资源)、令牌过期、签名错误、最小权限核对。

软件测试速查开发更新于 2026-10-13

接口鉴权与授权测试是什么

鉴权(Authentication)解决「你是谁」,授权(Authorization)解决「你能做什么」。接口层要按矩阵验证:无凭证与无效凭证应 401,有效凭证但权限不足应 403,最关键的还要测对象级越权——换一个资源 ID 能否拿到他人数据。令牌过期、签名错误、最小权限核对都在清单里。越权是接口安全里最常见、也最容易被漏测的一类缺陷。

场景

场景预期结果
无凭证401
无效/伪造凭证401
有效凭证、权限不足403
同权限访问他人对象403 或 404(按设计约定)
过期令牌401(并覆盖时钟偏差场景)
注销/改密后的旧令牌401(令牌失效即时生效)

基本信息

401 与 403缺凭证或凭证无效 vs 凭证有效但权限不足,断言必须分开
对象级越权同类资源换 ID、跨租户换 ID 都要覆盖
凭证生命周期签发、过期、刷新、注销、改密后的失效行为
最小权限核对低权限角色不应具备不该有的接口访问
记录要求安全类缺陷单独标注,便于跟踪修复时限

典型使用场景

  • 新接口接入:按鉴权矩阵逐格设计用例,评审前完成覆盖。
  • 权限模型调整:角色与资源关系变化后,回归越权用例集。
  • 令牌机制升级:JWT 换版本或接入统一认证后验证全生命周期。
  • 多租户系统:核对租户隔离,验证跨租户访问被拒绝。
  • 公开接口审计:检查无需认证的接口是否真无敏感数据。
  • 回归巡检:把越权用例做成用例集,每个版本自动执行。

越权验证示例

越权验证示例
curl -i https://api.example.com/orders/1001
# 无凭证:预期 401

curl -i -H 'Authorization: Bearer <用户B的令牌>' https://api.example.com/orders/1001
# 订单 1001 属于用户 A:预期 403 或 404,绝不能返回数据

curl -i -H 'Authorization: Bearer <过期令牌>' https://api.example.com/me
# 过期令牌:预期 401,响应体不应泄露内部校验细节
对象级越权覆盖「同类资源换 ID」与「跨租户换 ID」两类(参考 OWASP API Security Top 10 的 API1/API2)。
403 与 404 的选择是产品与安全约定:对外隐藏资源存在性时返回 404,断言写死前先与团队核对。
越权用例要覆盖批量接口:列表与导出接口常按查询条件泄漏他人数据,逐个单对象测试覆盖不到。

易错点

  • 只测无权限不测对象级越权:换 ID 拿到他人数据,最典型的接口泄漏被放过。
  • 403 与 404 的预期未与产品确认:断言写死导致误报,或错误实现被当成正确行为。
  • 忽略令牌生命周期:注销与改密后旧令牌仍有效,属于可被利用的会话缺陷。
  • 只用管理员账号测试:低权限角色与越权矩阵双双缺失,权限模型形同虚设。
  • 用真实用户数据做测试:越权测试触碰合规红线,应使用脱敏或仿真数据。

数据来源与参考

  • OWASP API Security Top 10(API1 越权、API2 认证缺陷)
  • RFC 9110(401 与 403 语义)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌