반응형
스프링 부트 보안 - 우체부가 401을 무단으로 제공합니다.
저는 Spring Boot에서 rest API를 개발하고 있습니다.저는 CRUD 작업을 할 수 있고 우체부는 정확한 응답을 제공하지만, 제가 스프링 보안 사용자 이름과 비밀번호를 추가하면 우체부는 401 Unauthorized를 제공합니다.
스프링 부트 보안 사용자 이름과 비밀번호를 아래와 같이 제공하였습니다.
application.properties
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
사용자 이름을 루트로 하고 비밀번호를 루트로 하여 기본 인증을 하였습니다.미리 보기 요청에서 헤더가 성공적으로 업데이트됨 메시지를 표시합니다.
편집 나는 우체부에서 쿠키를 삭제했지만 여전히 같은 문제에 직면하고 있습니다.
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();
}
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers(HttpMethod.POST,"/newuser").permitAll()
.antMatchers(HttpMethod.POST, "/login").permitAll()
.antMatchers(HttpMethod.POST,"/newuser/*").permitAll()
.antMatchers(HttpMethod.GET,"/master/*").permitAll()
.antMatchers(HttpMethod.GET,"/exploreCourse").permitAll()
.anyRequest().authenticated()
}
}
Spring Security를 구성해야 합니다. 기본적으로 인증을 위해 모든 경로가 보안됩니다.
이 링크에서 JWT 토큰 구현을 확인하십시오.
권한 부여가 봄 부팅에 필요한 경우 루트 구성 클래스에서 아래 주석을 사용합니다.
@EnableAuthorizationServer
( and other required annotations)
public class Application{
....
....
}
아래 종속성도 추가해야 합니다.
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>
언급URL : https://stackoverflow.com/questions/54758872/spring-boot-security-postman-gives-401-unauthorized
반응형
'programing' 카테고리의 다른 글
Android 모양 색상을 프로그래밍 방식으로 설정 (0) | 2023.08.04 |
---|---|
Android에서 토스트의 위치를 변경하는 방법은 무엇입니까? (0) | 2023.08.04 |
디렉토리 구조에서 가장 큰 10개의 파일을 찾는 방법 (0) | 2023.08.04 |
웹 API에서 여러 필터를 사용한 실행 순서 (0) | 2023.08.04 |
케라스에서 HDF5 파일에서 모델을 로드하는 방법은 무엇입니까? (0) | 2023.08.04 |