authentication和authorization
/ 5 min read
Table of Contents
这两个词在计算机科学、网络安全和日常生活中经常一起出现,但它们的含义有着本质的区别。 简单来说:
- Authentication (认证 / 鉴权):验证 “你是谁” (Who you are)。
- Authorization (授权):验证 “你能做什么” (What you can do)。
1. Authentication (认证)
核心含义:确认一个用户的身份是否真实。它是进门的过程。
- 关注点: 身份验证。
- 常用手段:
- 密码 (Password): 只有你知道的东西。
- 生物特征 (Biometrics): 指纹、人脸、虹膜(你是谁)。
- 硬件令牌 (Token): U 盾、动态口令卡(你拥有的东西)。
- 典型场景:
- 输入用户名和密码登录微信。
- 用指纹解锁手机。
- 出示护照过海关。
中文翻译: 认证、身份验证。
2. Authorization (授权)
核心含义:在确认身份后,系统决定该用户拥有什么权限。它是分配钥匙的过程。
- 关注点: 权限控制 (Access Control)。
- 常用机制:
- RBAC (Role-Based Access Control): 基于角色的访问控制(如:管理员 vs 普通用户)。
- ACL (Access Control List): 访问控制列表(如:只读、可写、可执行)。
- 典型场景:
- 你登录了公司 OA 系统,但你无法查看老板的工资单(权限不足)。
- 你在论坛上只能发帖,不能删帖(普通用户权限)。
- Windows 系统提示 “你当前无权修改该文件,请以管理员身份运行”。
中文翻译: 授权、权限管理。
3. 经典比喻:夜总会 (The Nightclub Analogy)
这是理解这两个概念最经典的例子:
Authentication (门口保安):
你走到门口,保安让你出示身份证。他核对你的照片和本人是否一致。
- 目的:确认你是你,且年满 18 岁。
- 结果:保安让你进门了。
Authorization (VIP 区域):
你进了门,想进里面的VIP 包厢。门口的服务员拦住你,因为你只有普通门票,没有 VIP 手环。
- 目的:确认你是否有资格进入特定区域。
- 结果:你被拒之门外,只能在大厅跳舞。
4. 计算机 / API 开发中的流程
在软件开发(特别是 REST API)中,流程通常是这样的:
- Request (请求): 客户端发送请求,带上 username 和 password。
- Authentication (认证): 服务器检查数据库,发现确实有这个用户,且密码正确。
- 通过后,服务器通常会颁发一个 Token (令牌) 给客户端。
- Authorization (授权): 客户端带着 Token 请求删除一篇文章。服务器解析 Token,发现该用户只是文章的读者,不是作者,也不是管理员。
- 服务器返回 403 Forbidden (禁止访问)。
5. 对比总结表
| 维度 | Authentication (认证) | Authorization (授权) |
|---|---|---|
| 核心问题 | Who are you? (你是谁?) | What can you do? (你能做什么?) |
| 发生时间 | 流程的第一步 | 认证成功之后 |
| 决定因素 | 凭证 (Credentials) | 策略 (Policies/Roles) |
| 失败后果 | 401 Unauthorized (未认证 / 未登录) | 403 Forbidden (禁止访问 / 无权限) |
| 反义词 | Anonymity (匿名) | Restriction (限制) |
一句话记忆法:
- Authentication 是安检(确认你没带炸弹,让你上飞机);
- Authorization 是登机牌(确认你是经济舱,不能去头等舱)。