WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Spring Boot & Hibernate · Expert · question 63 of 100

How can you configure and use Spring Security to secure REST APIs in a Spring Boot application with various authentication methods?

📕 Buy this interview preparation book: 100 Spring Boot & Hibernate questions & answers — PDF + EPUB for $5

In a Spring Boot application, Spring Security can be used to secure REST APIs by implementing authentication and authorization mechanisms. Spring Security provides a variety of authentication methods such as form-based, HTTP Basic, OAuth2, and JWT.

To use Spring Security in a Spring Boot application, we need to add the Spring Security and Spring Security Web dependencies to the project’s build configuration file, such as pom.xml for Maven or build.gradle for Gradle. Then we can define a security configuration class that extends WebSecurityConfigurerAdapter and overrides the configure(HttpSecurity http) method to define the security rules for our application.

For example, to define form-based authentication, we can configure the security rules as follows:

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        
        @Autowired
        private UserDetailsService userDetailsService;
        
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
            .authorizeRequests()
            .antMatchers("/", "/home").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login")
            .permitAll()
            .and()
            .logout()
            .permitAll();
        }
        
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth
            .userDetailsService(userDetailsService)
            .passwordEncoder(passwordEncoder());
        }
        
        @Bean
        public PasswordEncoder passwordEncoder() {
            return new BCryptPasswordEncoder();
        }
    }

In this example, we define the security rules using the HttpSecurity object, which allows us to specify which requests should be authorized and which ones should be blocked. We also define a UserDetailsService that retrieves the user details and a PasswordEncoder that is used to encrypt the user’s password.

Once the security rules are defined, we can use Spring Security annotations like @PreAuthorize and @Secured to secure individual methods or endpoints in our application.

Spring Security also provides support for token-based authentication methods like JWT and OAuth2. For example, to configure JWT-based authentication in a Spring Boot application, we can use the JwtConfigurer class provided by Spring Security as follows:

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        
        @Autowired
        private JwtTokenProvider jwtTokenProvider;
        
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
            .authorizeRequests()
            .antMatchers("/api/public/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .apply(new JwtConfigurer(jwtTokenProvider));
        }
        
    }

In this example, we define the security rules using the HttpSecurity object as before, but we also apply a JwtConfigurer that uses a JwtTokenProvider to validate JWT tokens and authenticate users.

Overall, Spring Security provides a flexible and powerful framework for securing REST APIs in a Spring Boot application, and it supports a variety of authentication methods to fit different use cases.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Spring Boot & Hibernate interview — then scores it.
📞 Practice Spring Boot & Hibernate — free 15 min
📕 Buy this interview preparation book: 100 Spring Boot & Hibernate questions & answers — PDF + EPUB for $5

All 100 Spring Boot & Hibernate questions · All topics