Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is Spring Security auto-configuration?
It is a feature in Spring Boot that automatically sets up basic security settings for your application without needing manual configuration.
Click to reveal answer
beginner
Which dependency triggers Spring Security auto-configuration in a Spring Boot project?
Adding the spring-boot-starter-security dependency triggers the auto-configuration of Spring Security.
Click to reveal answer
intermediate
What default behavior does Spring Security auto-configuration provide?
It secures all HTTP endpoints by requiring authentication and provides a default login form and a generated password in the console.
Click to reveal answer
intermediate
How can you customize Spring Security auto-configuration?
You can create your own <code>@Configuration</code> class with <code>@EnableWebSecurity</code> and define beans like <code>SecurityFilterChain</code> to override defaults.
Click to reveal answer
intermediate
What happens if you exclude Spring Security auto-configuration?
Your application will not have any security settings applied automatically, so endpoints will be open unless you configure security manually.
Click to reveal answer
What triggers Spring Security auto-configuration in a Spring Boot app?
AAdding spring-boot-starter-data-jpa dependency
BAdding spring-boot-starter-web dependency
CAdding spring-boot-starter-security dependency
DAdding spring-boot-starter-thymeleaf dependency
✗ Incorrect
The spring-boot-starter-security dependency activates Spring Security auto-configuration.
What is the default behavior of Spring Security auto-configuration?
AAll HTTP endpoints require authentication with a default login form
BOnly POST requests require authentication
CAll HTTP endpoints are open without authentication
DIt disables security by default
✗ Incorrect
By default, Spring Security auto-configuration secures all endpoints and provides a login form.
How can you disable Spring Security auto-configuration?
AAdd @EnableAutoConfiguration annotation
BRemove spring-boot-starter-security dependency
CAdd @SpringBootApplication annotation
DAdd spring-boot-starter-web dependency
✗ Incorrect
Removing the security starter dependency disables auto-configuration for security.
Which class can you define to customize Spring Security auto-configuration?
ADataSourceConfig
BApplicationRunner
CRestController
DSecurityFilterChain
✗ Incorrect
Defining a SecurityFilterChain bean allows you to customize security settings.
What does Spring Security auto-configuration print in the console on startup?
AA generated default user password
BDatabase connection details
CApplication version info
DNo output related to security
✗ Incorrect
It prints a generated password for the default user to help you log in initially.
Explain how Spring Security auto-configuration works in a Spring Boot application.
Think about what happens when you add the security starter to your project.
You got /4 concepts.
Describe ways to customize or override Spring Security auto-configuration.
Consider how you can add your own security rules in Spring Boot.
You got /4 concepts.
Practice
(1/5)
1. What happens when you add spring-boot-starter-security to a Spring Boot project without any additional configuration?
easy
A. The application runs without any security restrictions.
B. All web endpoints are secured with a default login page.
C. Only REST endpoints are secured, web pages remain open.
D. The application throws an error due to missing configuration.
Solution
Step 1: Understand default behavior of spring-boot-starter-security
Adding this starter enables Spring Security auto-configuration which secures all web endpoints by default.
Step 2: Recognize the default login page
Spring Security provides a default login page automatically when no custom security config is provided.
Final Answer:
All web endpoints are secured with a default login page. -> Option B
Hint: Default security locks all endpoints with login page [OK]
Common Mistakes:
Thinking endpoints remain open without config
Assuming only REST endpoints are secured
Believing an error occurs without config
2. Which of the following is the correct way to disable Spring Security auto-configuration in a Spring Boot application?
easy
A. @Configuration(exclude = SecurityAutoConfiguration.class)
B. @EnableAutoConfiguration(exclude = SecurityAutoConfiguration.class)
C. @ComponentScan(exclude = SecurityAutoConfiguration.class)
D. @SpringBootApplication(exclude = SecurityAutoConfiguration.class)
Solution
Step 1: Identify the correct annotation to exclude auto-configuration
Spring Boot allows excluding auto-configurations via the exclude attribute in @SpringBootApplication.
Step 2: Confirm the correct class to exclude
The class to exclude for disabling security auto-configuration is SecurityAutoConfiguration.class.
Final Answer:
@SpringBootApplication(exclude = SecurityAutoConfiguration.class) -> Option D
Quick Check:
Disable auto-config = exclude in @SpringBootApplication [OK]
Hint: Exclude SecurityAutoConfiguration in @SpringBootApplication [OK]
Common Mistakes:
Using @EnableAutoConfiguration instead of @SpringBootApplication
Trying to exclude in @ComponentScan or @Configuration
Not specifying the correct class to exclude
3. Given this Spring Boot application with spring-boot-starter-security added and no custom security config, what will happen when a user accesses /hello endpoint?
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World";
}
}
medium
A. The user sees "Hello World" without login.
B. The endpoint returns 404 Not Found.
C. The user is redirected to a login page before seeing "Hello World".
D. The application throws a runtime exception.
Solution
Step 1: Recall default security behavior with no custom config
All endpoints are secured and require authentication by default.
Step 2: Understand access flow to /hello endpoint
Accessing /hello triggers Spring Security to redirect to the default login page before allowing access.
Final Answer:
The user is redirected to a login page before seeing "Hello World". -> Option C
Quick Check:
Default security = login redirect before access [OK]
Hint: No config means login page before any endpoint access [OK]
Common Mistakes:
Assuming endpoints are open without login
Expecting 404 error for existing endpoint
Thinking runtime exception occurs
4. You added spring-boot-starter-security but your application fails to start with a bean creation error related to AuthenticationManager. What is the likely cause?
medium
A. You defined a custom SecurityFilterChain but forgot to expose an AuthenticationManager bean.
B. You did not add spring-boot-starter-web dependency.
C. You excluded SecurityAutoConfiguration but still use security annotations.
D. You have multiple @SpringBootApplication classes.
Solution
Step 1: Understand the error context with AuthenticationManager bean
When customizing security by defining a SecurityFilterChain, Spring Boot no longer auto-configures AuthenticationManager.
Step 2: Identify missing bean definition
You must manually expose an AuthenticationManager bean to satisfy dependencies.
Final Answer:
You defined a custom SecurityFilterChain but forgot to expose an AuthenticationManager bean. -> Option A
Assuming multiple @SpringBootApplication causes this error
5. You want to customize Spring Security auto-configuration to allow public access to /public/** endpoints but secure all others with form login. Which configuration snippet correctly achieves this?
hard
A. Define a SecurityFilterChain bean with http.authorizeHttpRequests().requestMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin().
B. Exclude SecurityAutoConfiguration and manually configure WebSecurityConfigurerAdapter to permit /public/**.
C. Add @EnableWebSecurity and override configure(HttpSecurity http) to permit /public/** and disable form login.
D. Add @SpringBootApplication(exclude = SecurityAutoConfiguration.class) and use http.csrf().disable().
Solution
Step 1: Use SecurityFilterChain bean to customize security rules
Spring Security 5.7+ recommends defining a SecurityFilterChain bean for custom rules.
Step 2: Permit /public/** and require authentication for others with form login
The method chain authorizeHttpRequests().requestMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin() correctly sets these rules.
Final Answer:
Define a SecurityFilterChain bean with http.authorizeHttpRequests().requestMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin() -> Option A
Quick Check:
Permit public paths + secure others + form login = Define a SecurityFilterChain bean with http.authorizeHttpRequests().requestMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin(). [OK]
Hint: Use SecurityFilterChain bean with permitAll and formLogin [OK]
Common Mistakes:
Excluding auto-config and using deprecated WebSecurityConfigurerAdapter