认证授权机制?

访客 网络编程 1

本文目录导读:

  1. 核心概念辨析
  2. 认证与授权的典型流程
  3. 常见实现技术
  4. 与“单点登录”的关系
  5. 总结对比表

这是一个关于信息安全基础架构的核心问题。认证是确认“你是谁”,授权是决定“你能做什么”,两者是系统安全的两道大门。

下面为你详细拆解这两个概念,以及它们如何协同工作。

核心概念辨析

认证

  • 定义:验证一个主体的身份是否真实有效的过程。
  • 核心问题你是谁?
  • 通俗理解:像在机场出示护照和登机牌,证明你是“张三”这个人本人。
  • 常见方式
    • 知识因素:你知道什么?如密码、PIN码、安全问题答案。
    • 拥有因素:你有什么?如手机验证码、硬件U盾、门禁卡。
    • 固有因素:你是什么?如指纹、人脸、虹膜、声纹等生物特征。
    • 行为因素:你做什么?如打字节奏、鼠标移动轨迹(较少用但存在)。
  • 重要概念多因素认证,结合两种或以上不同因素进行认证,安全性远高于单一因素(密码+手机验证码)。

授权

  • 定义:确定一个已经过认证的主体,拥有对哪些资源(如文件、API、功能模块)执行哪些操作(如读、写、删除、执行)的权限。
  • 核心问题你能做什么?
  • 通俗理解:张三(已通过认证)作为“员工”,可以进入“办公区”(资源),但不能进入“财务室”;作为“管理员”,则可以进入“服务器机房”并执行“重启系统”操作。
  • 常见模型
    • ACL:直接列出“谁”可以“做什么”,如“文件A:张三可读,李四可读写”。
    • RBAC:将权限赋予“角色”,再将角色赋予用户,如“管理员角色”有“用户管理”权限;“张三”是“管理员”,这是最常用的模型。
    • ABAC:基于用户、资源、环境(时间、地点、设备等)的属性,通过策略引擎动态判断,如“允许员工在上班时间(属性)从公司内网(属性)访问内部系统”。

认证与授权的典型流程

一个完整的访问过程通常是这样的:

sequenceDiagram
    participant U as 用户
    participant S as 系统
    participant DB as 用户数据库
    participant P as 权限策略
    U->>S: 1. 提交凭证(用户名+密码)
    S->>DB: 2. 验证凭证
    DB-->>S: 3. 认证成功,返回用户ID和角色
    Note over S: 用户已通过认证
    U->>S: 4. 发起请求(如:增删某条数据)
    S->>P: 5. 检查用户ID/角色是否有此操作权限
    P-->>S: 6. 授权通过
    S->>U: 7. 执行操作并返回结果
  • 第1-3步:完成认证,系统知道了用户的身份。
  • 第5-6步:完成授权,系统确认该身份有权限执行请求的操作。
  • 如果第2步认证失败,流程终止(“账号或密码错误”)。
  • 如果第6步授权失败,流程终止(“403 Forbidden”)。

常见实现技术

会话-Cookie

  • 原理:用户认证成功后,服务器创建一个“会话”,并给浏览器一个包含会话ID的Cookie,后续请求带上Cookie,服务器通过会话ID找到用户信息(认证态)和权限(授权态)。
  • 特点:有状态,服务器需要存储会话信息,适合传统Web应用。

JWT(JSON Web Token)

  • 原理:用户认证成功后,服务器签发一个包含用户信息(如用户ID、角色)的JWT(一个加密的JSON字符串),客户端保存JWT,后续请求在Authorization Header中带上JWT,服务器通过验证JWT的签名解析出用户信息。
  • 特点无状态,服务器无需存储会话,适合分布式系统、移动端、前后端分离应用。JWT本身是认证的令牌,但其中包含的角色/权限信息也常被直接用于授权判断

OAuth 2.0 / OpenID Connect

  • OAuth 2.0:一个授权框架,允许用户授权第三方应用访问其在另一个服务上的资源,而不需要给出密码,用微信登录(授权)第三方网站,微信不会把密码给第三方,而是给它一个临时的“门票”(Access Token)。
  • OpenID Connect:在OAuth 2.0的基础上增加认证层,它让第三方应用不仅能获得授权,还能确认用户的身份。
  • 关系:常被合称为现代身份验证与授权的标准协议,OAuth 2.0解决授权问题,OpenID Connect解决认证问题。

与“单点登录”的关系

  • SSO不是一种独立的认证或授权机制,而是一种访问控制架构,它让用户只需登录一次,就能访问多个互相信任的应用系统。
  • 实现SSO的核心依赖:SSO通常依赖中央认证服务来实现统一认证,并可能用到OAuth 2.0、SAML(安全断言标记语言)、JWT等标准协议来传递认证和授权信息。

总结对比表

特性 认证 授权
核心问题 你是谁? 你能做什么?
目标 验证身份 控制访问
顺序 先发生 后发生,依赖认证结果
常用技术 密码、生物识别、MFA RBAC、ACL、ABAC、权限策略
失败响应 401 Unauthorized 403 Forbidden
示例 输入密码登录 管理员才能访问后台

一个关键点:在实践中,我们往往会直接称“认证授权(Auth)”,但内心要清楚,这通常是先“认”后“授”两个步骤的结合,JWT、OAuth、Session等都可以同时承载认证信息和授权信息(如角色、权限范围),但它们的职责定位不同,理解这个根本差异,是设计安全系统的起点。

标签: 授权

抱歉,评论功能暂时关闭!