title: Spring Boot Security - Postman gives 401 Unauthorized
body: <p>I am developing rest APIs in Spring Boot. I am able to do CRUD operations and postman gives correct responses, but when I add Spring Security username and password Postman gives 401 Unauthorized.</p>
  
  <p>I have provided a spring boot security username and password as below.</p>
  
  <p>application.proptries</p>
  
  <pre><code>spring.jpa.hibernate.ddl-auto=update
  spring.datasource.platform=mysql
  spring.datasource.url=jdbc:mysql://localhost:3306/pal?createDatabaseIfNotExist=true
  spring.datasource.username=root
  spring.datasource.password=
  spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
  spring.security.user.name=root
  spring.security.user.password=root
  </code></pre>
  
  <p>I have done basic auth with username as root and password as root.
  Preview request gives headers updated successfully message :</p>
  
  <p><a href="https://i.stack.imgur.com/4fiqS.png" rel="noreferrer"><img src="https://i.stack.imgur.com/4fiqS.png" alt="enter image description here"></a></p>
  
  <p><strong>EDIT</strong>
  <a href="https://i.stack.imgur.com/bZYR6.png" rel="noreferrer">I have deleted the cookies in postman but still facing the same issue</a></p>
  
  <pre><code>SecurityConfing.java
  My Security Configuration are as below. 
  import javax.sql.DataSource;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.core.annotation.Order;
  import org.springframework.jdbc.datasource.DriverManagerDataSource;
  import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  
  @Configuration
  @EnableWebSecurity
  @Order(1000)
  public class SecurityConfig extends WebSecurityConfigurerAdapter{
  
  
      public void configureGlobal(AuthenticationManagerBuilder authenticationMgr) throws Exception {
  
          authenticationMgr.jdbcAuthentication().dataSource(dataSource())
            .usersByUsernameQuery(
             "select email,password from user where email=? and statusenable=true")
            .authoritiesByUsernameQuery(
             "select email,role from user where email=? and statusenable=true");
  
          System.out.println(authenticationMgr.jdbcAuthentication().dataSource(dataSource())
            .usersByUsernameQuery(
             "select email,password from user where email=? and statusenable=true")
            .authoritiesByUsernameQuery(
             "select email,role from user where email=? and statusenable=true"));
      }
  
      @Bean(name = "dataSource")
       public DriverManagerDataSource dataSource() {
           DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
           driverManagerDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
           driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/pal");
           driverManagerDataSource.setUsername("root");
           driverManagerDataSource.setPassword("");
           return driverManagerDataSource;
       }
  
      @Override
       protected void configure(HttpSecurity http) throws Exception {
      http
      .csrf().disable()
      .authorizeRequests().antMatchers("/login").permitAll()
      .anyRequest().authenticated()
      .and()
      .formLogin().loginPage("/login").permitAll()
      .and()
      .authorizeRequests().antMatchers("/admin/**").hasAnyRole("ROLE_ADMIN","ROLE_USER").anyRequest().permitAll()
      .and()
      .authorizeRequests().antMatchers("/user/**").hasAnyRole("ROLE_USER").anyRequest().permitAll();
  
  }
  </code></pre>