0
0
Spring Bootframework~10 mins

Securing endpoints by role in Spring Boot - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Securing endpoints by role
User sends request
Spring Security intercepts
Check user authentication
Yes
Check user roles
Role matches
Allow access
Response sent
The request passes through Spring Security which checks if the user is authenticated and has the required role before allowing access to the endpoint.
Execution Sample
Spring Boot
http
  .authorizeHttpRequests(auth -> auth
    .requestMatchers("/admin/**").hasRole("ADMIN")
    .requestMatchers("/user/**").hasAnyRole("USER", "ADMIN")
    .anyRequest().authenticated()
  )
This code configures endpoint access so only users with ADMIN role can access /admin/**, users with USER or ADMIN role can access /user/**, and all other requests require authentication.
Execution Table
StepRequest URLUser RolesAuthentication?Role CheckAccess Result
1/admin/dashboard[ADMIN]YesHas ADMIN roleAccess Allowed
2/admin/dashboard[USER]YesMissing ADMIN roleAccess Denied
3/user/profile[USER]YesHas USER roleAccess Allowed
4/user/profile[GUEST]YesMissing USER or ADMIN roleAccess Denied
5/public/info[]NoNot authenticatedAccess Denied
💡 Access is denied if user is not authenticated or lacks required role; allowed only if both checks pass.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
User Roles[][ADMIN][USER][USER][GUEST][]
Authenticationfalsetruetruetruetruefalse
Access ResultN/AAllowedDeniedAllowedDeniedDenied
Key Moments - 3 Insights
Why does a user with USER role get denied access to /admin/dashboard?
Because the endpoint requires ADMIN role, and the user only has USER role. See execution_table row 2 where role check fails.
What happens if a user is not authenticated at all?
Access is denied immediately before role checks. See execution_table row 5 where authentication is No and access is denied.
Can a user with ADMIN role access /user/profile?
Yes, because /user/** allows USER or ADMIN roles. See execution_table row 3 for USER role allowed, ADMIN role would also pass.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the access result for a user with ADMIN role requesting /admin/dashboard?
AAuthentication Required
BAccess Denied
CAccess Allowed
DRole Check Skipped
💡 Hint
Check execution_table row 1 under Access Result column.
At which step does the authentication fail?
AStep 5
BStep 3
CStep 2
DStep 1
💡 Hint
Look at the Authentication? column in execution_table.
If a user has roles [USER, ADMIN], what would be the access result for /user/profile?
AAccess Denied
BAccess Allowed
CAuthentication Denied
DRole Check Skipped
💡 Hint
Refer to execution_table row 3 and consider role matching logic.
Concept Snapshot
Securing endpoints by role in Spring Boot:
- Use authorizeHttpRequests() to set role rules.
- .requestMatchers("/path/**").hasRole("ROLE") restricts access.
- User must be authenticated and have required role.
- Access denied if either check fails.
- Roles are case-sensitive and usually prefixed with 'ROLE_'.
Full Transcript
In Spring Boot, securing endpoints by role means controlling who can access certain URLs based on their assigned roles. When a user sends a request, Spring Security first checks if the user is authenticated. If not, access is denied immediately. If authenticated, it checks if the user has the required role for the requested endpoint. For example, endpoints under /admin/** require the ADMIN role, while /user/** can be accessed by USER or ADMIN roles. If the user has the correct role, access is allowed; otherwise, it is denied. This ensures only authorized users can reach sensitive parts of the application.