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
Authentication flow
📖 Scenario: You are building a simple Spring Boot application that needs to check user login credentials.This is like a door lock that only opens when the right key (username and password) is used.
🎯 Goal: Create a basic authentication flow in Spring Boot that checks a fixed username and password.When the user sends their username and password, the app will verify them and respond accordingly.
📋 What You'll Learn
Create a controller class named AuthController.
Add a POST endpoint /login that accepts username and password.
Use a fixed username user123 and password pass123 for validation.
Return a success message if credentials match, otherwise return an error message.
💡 Why This Matters
🌍 Real World
Authentication is a key part of almost every web application. This simple flow is like the front door check to allow users in.
💼 Career
Understanding how to build authentication endpoints is essential for backend developers working with Spring Boot or any web framework.
Progress0 / 4 steps
1
DATA SETUP: Create the AuthController class with fixed credentials
Create a class called AuthController annotated with @RestController. Inside it, define two private final String variables: correctUsername set to "user123" and correctPassword set to "pass123".
Spring Boot
Hint
Use @RestController to make the class a REST controller.
Define two private final String variables for username and password.
2
CONFIGURATION: Add a POST mapping for /login with request body
Inside AuthController, add a method login annotated with @PostMapping("/login"). The method should accept a parameter of type LoginRequest annotated with @RequestBody. Create the LoginRequest class with two public String fields: username and password.
Spring Boot
Hint
Use @PostMapping("/login") to create the login endpoint.
Create a simple class LoginRequest with public fields for username and password.
In the login method, check if request.username equals correctUsername and request.password equals correctPassword. If both match, return the string "Login successful". Otherwise, return "Invalid username or password".
Spring Boot
Hint
Use String.equals() to compare strings in Java.
Return the success message if both username and password match.
4
COMPLETION: Add class-level annotations and imports for Spring Boot
Add the necessary import statements for @RestController, @PostMapping, and @RequestBody from org.springframework.web.bind.annotation. Ensure the AuthController class is public and all code is properly structured.
Spring Boot
Hint
Import the Spring annotations to make the controller work.
Make sure the class is public.
Practice
(1/5)
1. What is the main purpose of the authentication flow in a Spring Boot application?
easy
A. To send emails to users after login
B. To style the user interface of the login page
C. To store user data in the database
D. To verify the identity of a user before granting access
Solution
Step 1: Understand authentication flow purpose
Authentication flow is about checking who the user is before allowing access.
Step 2: Identify correct purpose in options
Only To verify the identity of a user before granting access describes verifying user identity, which matches authentication.
Final Answer:
To verify the identity of a user before granting access -> Option D
Quick Check:
Authentication = Verify user identity [OK]
Hint: Authentication means checking who the user is [OK]
Common Mistakes:
Confusing authentication with styling or data storage
Thinking authentication sends emails
Mixing authentication with authorization
2. Which of the following is the correct way to configure URL access rules in Spring Security?
easy
A. http.authorizeHttpRequests().requestMatchers("/admin/**").authenticated()
B. http.authorizeRequests().antMatchers("/private/**").denyAll()
C. http.authorizeRequests().anyRequest().allow()
D. http.authorizeRequests().requestMatchers("/public/**").permitAll()
Solution
Step 1: Identify correct method for URL rules in Spring Security
Spring Security 6+ uses http.authorizeHttpRequests() with requestMatchers() for URL patterns.
Step 2: Check which option uses correct syntax and meaning
http.authorizeHttpRequests().requestMatchers("/admin/**").authenticated() uses authorizeHttpRequests() and requestMatchers() with authenticated(), which is correct.
Final Answer:
http.authorizeHttpRequests().requestMatchers("/admin/**").authenticated() -> Option A
Quick Check:
Use authorizeHttpRequests() + requestMatchers() [OK]
Hint: Use authorizeHttpRequests() with requestMatchers() in Spring Security 6+ [OK]
Common Mistakes:
Using deprecated authorizeRequests() in new Spring versions
Using denyAll() incorrectly for access control
Using anyRequest().allow() which is invalid
3. Given this Spring Security configuration snippet, what happens when a user accesses /dashboard without logging in?
B. anyRequest().authenticated() should come before requestMatchers()
C. permitAll() on /admin/** allows unrestricted access to admin pages
D. requestMatchers() should be replaced with antMatchers()
Solution
Step 1: Review access rules for /admin/**
permitAll() means anyone can access /admin/** without login, which is usually a security risk.
Step 2: Check order and methods
Order is correct; anyRequest().authenticated() applies after permitAll(). formLogin() without URL uses default login page, which is valid.
Final Answer:
permitAll() on /admin/** allows unrestricted access to admin pages -> Option C
Quick Check:
permitAll() means open access [OK]
Hint: permitAll() means no login needed, risky on admin URLs [OK]
Common Mistakes:
Thinking order of matchers is wrong here
Assuming formLogin() needs explicit URL
Confusing requestMatchers() with antMatchers()
5. You want to create a custom authentication flow that checks a user's email and password against a database and then grants access. Which Spring Boot component should you implement to handle this logic?
hard
A. UserDetailsService to load user data and PasswordEncoder to check password
B. AuthenticationEntryPoint to redirect users after login
C. CorsConfiguration to allow cross-origin requests
D. HttpFirewall to block unauthorized IP addresses
Solution
Step 1: Identify component for loading user info
UserDetailsService is designed to load user details like email and password from a database.
Step 2: Identify component for password checking
PasswordEncoder is used to verify the password matches the stored hash securely.
Step 3: Confirm other options are unrelated
AuthenticationEntryPoint handles unauthorized access, not authentication logic. CorsConfiguration and HttpFirewall serve different purposes.
Final Answer:
UserDetailsService to load user data and PasswordEncoder to check password -> Option A