forked from spring-projects/spring-security
-
Notifications
You must be signed in to change notification settings - Fork 0
Spring‐Security
xiaoxpai edited this page Jun 6, 2024
·
2 revisions
Welcome to the spring-security wiki!
Spring-Security 是一个强大且高度可定制的身份验证和访问控制框架,属于 Spring 框架的一部分。它主要用于保护基于 Java 的企业应用程序,确保应用程序的安全性和稳定性。
-
身份验证(Authentication):
- 验证用户身份的真实性。支持多种身份验证方式,包括表单登录、HTTP 基础认证、OAuth、LDAP、JWT、OpenID Connect 等。
- 可以自定义身份验证机制,如数据库查询、第三方认证服务等。
-
授权(Authorization):
- 决定用户是否有权限访问特定资源或操作。基于角色或权限进行访问控制。
- 支持细粒度的权限控制,如方法级、URL 级、资源级的访问控制。
-
防护功能:
- 防止常见的安全漏洞,如跨站请求伪造(CSRF)、会话固定攻击、点击劫持(Clickjacking)、跨站脚本攻击(XSS)等。
- 提供安全头(Security Headers)配置以提高应用的安全性。
-
集成能力:
- 与 Spring 框架的其他模块(如 Spring MVC、Spring Boot)无缝集成。
- 支持与第三方安全框架和服务的集成,如 OAuth 2.0 服务器、SAML 等。
-
事件管理:
- 提供安全事件的监控和审计功能,可以记录登录尝试、登录成功、登录失败等安全相关的事件。
-
会话管理:
- 管理用户会话,包括并发会话控制、会话固定攻击防护、会话超时配置等。
-
SecurityContext:
- 保存当前安全上下文,包括当前用户的认证信息和权限。
-
Authentication:
- 表示用户的身份信息和凭证。
-
GrantedAuthority:
- 用户的权限信息。
-
UserDetailsService:
- 用于从数据源加载用户的详细信息(如用户名、密码、权限)。
-
AuthenticationProvider:
- 负责执行特定的身份验证逻辑。
-
FilterChainProxy:
- 安全过滤器链,负责拦截和处理所有进出应用程序的请求。
-
企业内部应用:
- 管理和控制员工访问权限,确保敏感数据和功能的安全。
-
电子商务平台:
- 保护用户账户信息,防止未经授权的支付和交易操作。
-
金融系统:
- 确保高安全性要求的金融数据和交易的安全,防止欺诈和数据泄露。
-
社交网络:
- 管理用户登录和注册流程,确保用户数据的隐私和安全。
-
添加依赖:
- 在 Maven 或 Gradle 中添加 Spring-Security 的依赖。
-
配置安全策略:
- 创建一个配置类,使用
@EnableWebSecurity
注解,并继承WebSecurityConfigurerAdapter
,重写其方法来配置安全策略。 ❗ ❗ ❗ 注意: 后续版本已废弃该方法WebSecurityConfigurerAdapter
,可以注册一个Bean对象SecurityFilterChain
- 创建一个配置类,使用
-
定义身份验证和授权规则:
- 使用
HttpSecurity
对象定义 URL 访问规则、表单登录配置、CSRF 防护等。
- 使用
-
实现 UserDetailsService:
- 提供用户信息的加载逻辑,通常从数据库或其他持久化存储中读取用户数据。
如果你想了解Spring Security是如何工作的,可以参考架构部分。
spring-security依赖