跳到主要内容

认证与授权

认证(Authentication)与授权(Authorization)是现代应用系统的核心安全机制。本教程系统讲解从传统 Session-Cookie 到现代 JWT、OAuth 2.0、OpenID Connect 的完整知识体系,帮助你构建安全可靠的身份管理系统。

什么是认证与授权?

认证(Authentication)

认证是验证用户身份的过程,回答"你是谁?"的问题。常见方式包括:

  • 用户名/密码验证
  • 手机验证码
  • 第三方登录(微信、GitHub、Google 等)
  • 双因素认证(2FA)
  • 生物识别(指纹、人脸)

授权(Authorization)

授权是决定用户可以访问哪些资源的过程,回答"你能做什么?"的问题。常见模型包括:

  • RBAC:基于角色的访问控制(Role-Based Access Control)
  • ABAC:基于属性的访问控制(Attribute-Based Access Control)
  • ACL:访问控制列表(Access Control List)

认证方式演进

┌─────────────────────────────────────────────────────────────────┐
│ 认证方式演进 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Session-Cookie ──► JWT/Token ──► OAuth/OIDC │
│ (传统单体应用) (无状态认证) (第三方授权) │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 服务器 │ │ 无状态 │ │ 第三方 │ │
│ │ 存会话 │ │ 自包含 │ │ 身份提供 │ │
│ │ 状态 │ │ 令牌 │ │ 商(IdP) │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

学习路径

第一阶段:基础概念

  1. Session-Cookie 认证 - 理解传统的有状态认证机制
  2. JWT 认证 - JSON Web Token 的原理与实践

第二阶段:第三方授权

  1. OAuth 2.0 - 授权框架的核心流程
  2. OpenID Connect - 基于 OAuth 的身份认证层

参考资料

  1. 速查表 - 常用认证授权命令和代码快速参考

应用场景对比

场景推荐方案说明
单体 Web 应用Session-Cookie简单可靠,服务器控制会话
分布式/微服务JWT无状态,易于水平扩展
第三方登录OAuth 2.0 + OIDC标准协议,生态完善
企业内网SSO + LDAP/AD统一身份管理
移动端 APPJWT + Refresh Token适合无 Cookie 环境
API 开放平台OAuth 2.0安全的第三方授权

安全最佳实践

  1. HTTPS 传输 - 所有认证流程必须使用 HTTPS
  2. 密码安全 - 使用 bcrypt/Argon2 等慢哈希算法
  3. Token 安全 - 设置合理的过期时间,使用 HttpOnly Cookie
  4. CSRF 防护 - Session 认证需要防范跨站请求伪造
  5. Rate Limiting - 登录接口需要限流防暴力破解
  6. 审计日志 - 记录所有认证授权事件

技术栈推荐

后端实现

  • Java: Spring Security, Sa-Token
  • Node.js: Passport.js, jsonwebtoken
  • Python: FastAPI OAuth2, PyJWT
  • Go: golang-jwt, casbin

身份提供商 (IdP)

  • 开源: Keycloak, Authelia, Casdoor
  • 云服务: Auth0, AWS Cognito, Firebase Auth
  • 企业: Okta, Azure AD, Ping Identity

开始你的认证与授权学习之旅吧!