
Spring Security 教程(03)、简介
Diebug认证:证明你是你是谁



认证(Authentication)是安全系统的第一步。用户需要提供身份证明,系统验证这个身份是否合法。
Spring Security 支持的认证方式包括:
- HTTP Basic 认证:浏览器弹出登录框,适合 API 调用
- 表单登录:自定义登录页面,适合 Web 应用
- HTTP Digest 认证:基于哈希的认证方式,比 Basic 更安全
- X.509 客户端证书:基于 SSL 证书的身份验证
- LDAP 认证:连接企业 LDAP 目录服务
- OpenID 认证:基于 OAuth 的第三方登录
- CAS 认证:企业级单点登录方案
- Remember-Me:自动登录,基于 Cookie
- JAAS 认证:Java 认证和授权服务
授权:证明你有权限做这件事
认证通过后,系统需要判断这个用户能做什么。授权(Authorization)就是做这个判断的。
Spring Security 的授权分为三个层次:
1. URL 级别授权:控制哪些 URL 需要认证、哪些可以公开访问。
1 | http.authorizeRequests() |
2. 方法级别授权:控制哪些方法可以被哪些角色调用。
1 | @PreAuthorize("hasRole('ADMIN') and #userId == authentication.principal.id") |
3. 域对象级别授权:控制用户对具体数据对象的访问权限,通常结合 ACL(访问控制列表)实现。
安全过滤器链:请求经过的每一道关卡
Spring Security 的核心是一个 Servlet Filter 链。每个 HTTP 请求都会经过这个链上的每个 Filter,每个 Filter 负责一个安全职责。
关键 Filter 包括:
- SecurityContextPersistenceFilter:在请求开始前加载 SecurityContext,请求结束后保存
- UsernamePasswordAuthenticationFilter:处理表单登录请求
- BasicAuthenticationFilter:处理 HTTP Basic 认证
- ExceptionTranslationFilter:处理认证和授权异常
- FilterSecurityInterceptor:最终的授权决策点
架构设计:分层清晰,职责分离
Spring Security 的架构设计遵循单一职责原则。认证由 AuthenticationManager 负责,授权由 AccessDecisionManager 负责,安全上下文由 SecurityContextHolder 管理。这种设计让你可以灵活替换某个组件,而不影响其他部分。
本文档的结构
本指南分为三个部分:
- 第二部分”入门”:快速了解框架,配置好一个基本应用
- 第三部分”架构和实现”:深入了解框架内部的工作原理
- 后续章节:按功能模块组织的引用式文档,按需查阅
安全提醒:Spring Security 不是万能的。它解决的是应用层的认证授权问题,但传输层安全(HTTPS)、基础设施安全(防火墙、WAF)、应用层漏洞(XSS、SQL注入)需要其他措施来防护。
喜欢这篇文章的人也看了
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果