认证、授权、鉴权与权限控制

认证、授权、鉴权与权限控制

认证、授权、鉴权与权限控制

在后端开发中存在 认证(Authentication)、授权(Authorization)、鉴权(Access Control)和 权限控制(Permission Control)。

1. 认证(Authentication)

我是谁?

系统需要确认“你是不是你”。

1.1 核心目的

验证用户的身份是否合法、真实、唯一。

1.2 常见方式

方式

说明

优缺点

账号 + 密码

最常见,通过校验数据库中的哈希密码完成

简单,但存在泄露风险

短信验证码

短信接收动态码

安全性一般,成本高

OAuth2 / 第三方登录

通过微信、GitHub、Google 等完成身份确认

用户体验好,但依赖外部系统

Token / JWT

登录后签发令牌,后续请求凭 Token 验证身份

前后端分离项目常用

多因素认证(MFA)

密码 + 短信 + 指纹 + 人脸

安全性最高,体验最差

1.3 类比

认证就像查身份证:去网吧,老板要你出示身份证 → 系统在做同样的事情。

2. 授权(Authorization)

我能做什么?

在身份被确认后,系统需要判定用户能否访问某资源或操作某功能。

2.1 核心目的

根据用户身份,决定能否访问某个资源。

2.2 常见模型

模型

全称

特点

适用场景

RBAC

Role-Based Access Control

用户 → 角色 → 权限,基于角色分配权限

企业级系统最常见

ABAC

Attribute-Based Access Control

基于用户属性、资源属性、环境属性等动态判断

政务系统、金融风控

PBAC

Policy-Based Access Control

基于策略规则控制访问

大型 SaaS、多租户系统

2.3 类比

授权就像办会员卡:有身份证(认证成功) ≠ 能进 VIP 区。

3. 鉴权(Access Control)

验证用户是否有权限访问资源

严格来说,“鉴权”是“认证 + 授权”的执行过程。很多公司会把“鉴权”当作“权限校验”使用。

3.1 核心目的

在用户请求时,系统判断:

是否登录(认证)

是否有权限(授权)

3.2 常见实现

(1) 基于 Session / Cookie

早期 Web 常用

服务端存 Session,客户端传 Cookie 识别

缺点:分布式扩展麻烦

(2) 基于 JWT

登录后颁发 Token,用户请求时带上 Token

服务端解析 Token → 确认身份 & 校验权限

缺点:Token 被盗风险高,需结合 HTTPS

(3) 基于 API 网关

微服务架构中常用

认证、鉴权由网关统一处理

应用层只管业务,不管安全

4. 权限控制(Permission Control)

如何精细地定义和管理权限

这是对“授权”和“鉴权”的具体落地。

4.1 典型场景

功能级权限:能否访问某菜单

数据级权限:能否查看某条数据

字段级权限:能否看到某个字段

操作级权限:能否删除、修改、导出

4.2 常见做法

(1) RBAC 三层模型

用户(User)

角色(Role)

权限(Permission)

用户 → 角色 → 权限,适合中小型系统

(2) RBAC + 数据权限

用户只能看自己辖区的数据,例如:

SELECT * FROM orders

WHERE user_id = :current_user

OR region_id IN (:permitted_regions)

(3) 策略引擎

使用 Casbin、OPA(Open Policy Agent) 这类策略框架

支持动态加载策略,实现灵活的权限控制

5. 四者关系总结

概念

问题

本质

常用技术

认证

你是谁?

身份确认

密码、Token、OAuth

授权

你能做什么?

权限分配

RBAC、ABAC、PBAC

鉴权

你能不能访问?

校验身份 + 权限

Session、JWT、网关

权限控制

如何设计权限?

权限模型落地

RBAC、Casbin、策略引擎

5.1 总结思维导图

认证 Authentication —— 确认身份

授权 Authorization —— 分配权限

鉴权 Access Control —— 执行检查

权限控制 Permission Control —— 模型设计 & 落地实现

6. 最佳实践

前后端分离

前端只做页面控制,不信任前端权限逻辑

后端负责最终鉴权

分层设计

认证、授权和权限控制解耦

最小权限原则

用户只能访问必要资源

日志与审计

所有敏感操作记录日志,方便排查安全问题

安全兜底

除了在应用层做鉴权,还可在 API 网关、反向代理层加强控制

7. 总结

认证解决“你是谁”

授权解决“你能做什么”

鉴权是“检查是否允许”

权限控制是“如何设计和实现权限管理”

企业级系统中,认证和授权通常由 Spring Security、Shiro、OAuth2 Server 等安全框架完成,权限控制需要结合业务场景做定制化设计。

相关推荐

酸奶常温下可以放置多久?科学解析与安全指南
365bet体育在线公司备用

酸奶常温下可以放置多久?科学解析与安全指南

📅 09-29 👁️ 4387
创客中国
365bet注册官网

创客中国

📅 12-12 👁️ 9519
逆水寒紫气东来怎么获得(逆水寒打孔威望消耗)