HttpSecurity
About
Responsibilities of HttpSecurity
Sample Usage
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable()) // Disable CSRF for APIs
.authorizeHttpRequests(auth -> auth
.requestMatchers("/public/**").permitAll() // Allow public access
.requestMatchers("/admin/**").hasRole("ADMIN") // Only ADMIN can access
.anyRequest().authenticated() // All other requests need authentication
)
.formLogin(Customizer.withDefaults()) // Enable default form-based login
.logout(logout -> logout.logoutUrl("/logout").permitAll()); // Custom logout settings
return http.build();
}
}Authentication Configuration
Syntax for Authentication Configuration
1. Basic Authentication
Configuring Basic Authentication
How Basic Authentication Works
2. Form-Based Authentication
Configuring Form-Based Authentication
How Form-Based Authentication Works
Customizing Login & Logout
3. JWT Authentication (Using Custom Filter)
Configuring JWT Authentication
How JWT Authentication Works
4. OAuth2 Login (Social Logins)
Configuring OAuth2 Login
How OAuth2 Authentication Works
Authorization Rules
Configuring Authorization Rules in Spring Security
Basic Authorization Configuration
1. Role-Based Access Control
Defining User Roles
Role-Based Authorization in Security Configuration
hasAuthority() vs. hasRole()
hasAuthority() vs. hasRole()Storing Permissions Instead of Roles
2. Method-Level Security
Enabling Method Security
@PreAuthorize - Check Before Method Execution
@PreAuthorize - Check Before Method Execution@PostAuthorize - Check After Method Execution
@PostAuthorize - Check After Method Execution @Secured - Alternative to @PreAuthorize
@Secured - Alternative to @PreAuthorize @RolesAllowed - JSR-250 Alternative
@RolesAllowed - JSR-250 AlternativeCombining Role-Based & Method-Level Security
Example: Combining Both Approaches
Session Management
Configuring Session Management in Spring Security
Stateless Session (For REST APIs)
Why Stateless Sessions for REST APIs?
How to Implement Stateless Sessions in Spring Security?
Example: Custom JWT Authentication Filter
Preventing Session Fixation Attacks
How to Prevent Session Fixation?
Session Fixation Strategies in Spring Security
Example: Custom Login Handler to Invalidate Old Sessions
Managing Concurrent Sessions
Explanation
CSRF Protection
Disabling CSRF for APIs
Enabling CSRF for Web Applications
How the CSRF Token Works Here?
Example: Fetching the CSRF Token in JavaScript
CORS
CORS Configuration
Security Headers
Default Security Headers Added by Spring Security
Customizing Security Headers
Disabling Security Headers (Not Recommended)
Custom Security Filters
Adding a Custom Filter
Example: Logging All Incoming Requests
Registering the Filter in Spring Security
Last updated