本节摘要:先验身份(认证)、再判权限(授权)、路上传加密(传输层),是接口安全的三件套。本节讲清认证的四种常见机制(API Key、Basic、OAuth 2.0、JWT)与授权的最小权限原则,再从资源敏感度出发给出"先 HTTPS、再按需认证、最后精细授权"的分级落地顺序。
阅读完本节,你应当能够:
安全常被笼统归为"加密 + 登录",但其实是三道不同的题:
这三者一个都不能少。只认证不授权,登录了一切都能偷看;只加密不认证,来者不拒;只授权不认证,权限判给谁都不知道。下面逐件落地。
| 机制 | 强度 | 特点 | 适用 |
|---|---|---|---|
| API Key | 低 | 一串密钥代表身份,简单 | 低风险、内部工具、配额统计 |
| Basic Auth | 低 | 用户名密码 base64 传输 | 必须搭 HTTPS,慎用于生产 |
| OAuth 2.0 | 高 | 授权框架,委托访问 | 第三方应用访问用户数据 |
| JWT | 高 | 自包含签名的无状态令牌 | 分布式、无状态 REST 服务 |
逐个说关键取舍:
Authorization 头。base64 不是加密,是编码,明文可解,必须配 HTTPS,否则等于裸奔。适合快速启用已有账号体系的内部低风险服务。授权判"能不能做",铁律是最小权限:只给完成任务所需的最少资源与操作,给多了,一个泄露的令牌就能放大攻击面。
落地到接口上,结合资源归属与角色两个维度:
GET /users/99/orders 只允许"99 本人或有管理权的人"访问,不能凭"登录了"就放行任意用户的订单。{ "subject": "user:99", "scopes": ["orders:read", "orders:cancel"], "resource": "/users/99/orders" }
⚠️ 常见坑:认证通过 = 全部放行("能登进去就随你")。越权事故几乎都来自"只验了身份,没验对某资源的权限"。最小权限原则是把这个缝焊住的关键。
把安全三件套的落地顺序画成一张门禁图,一眼看懂该从哪道门入手:

安全也别图"一步到位加最重的",成本与敏感度要匹配。给一套分级落地顺序:
分级的好处是:低成本场景(内部统计、公开目录)不必背 OAuth 的复杂;高敏感场景(支付、个人数据)不会因为图省事而裸奔。安全不是"上最贵的东西",而是"在每处上够用的东西"。
拿一个具体接口核一遍,这套分级就立住了。公开的图书列表:只上 HTTPS 即可,连认证都可以省。用户自己的订单列表:必须认证,jwt 先放在 Authorization 头,授权时校验"这份订单属于当前令牌所代表的用户"。管理员的用户列表:既要强认证,又要按角色把"删除"这类操作扣住,没权限就回 403。三个接口、三档安全强度,各自的敏感度决定落在哪道门——这就是分级落地最实在的用法。
💡 关键直觉:把安全想成"门禁系统"——先保证每条路都加密(墙),再在每扇门验身份(钥匙),最后按每间房判权限(能不能进)。三道门各司其职,缺一道系统就漏风。
安全防线就位,下一节给契约装上"加速条款"——缓存机制让读得多的接口跑得更快。