스프링 시큐리티
어떤 요청이 들어왔을 경우 pom.xml 설정에 spring security관련 라이브러리가 추가되어있을 경우
인증되지 않은 사용자가 접근하려고 하는 경우 기본적으로 로그인 화면으로 Redirection을 해 줌.
Redirection이라는 것은 이전 글에서 설명했던 것과 같이 어떤 요청이 들어왔을 경우 다른 요청으로 바꿔서 보내는 것을 의미함.
localhost:8080을 주소줄에 입력 후 enter를 치면 주소 줄이 localhost:8080/login 으로 자동으로 Redirection이 됨.
따라서 내가 설정한 로그인 페이지로 이동할 수 있도록 설정하기 위해서는 SecurityConfig 파일을 생성 후 작성할 필요가 있음.
@EnableWebSecurity // 해당 파일로 security 활성화
@Configuration // IoC -> 빈으로 등록 메모리에 뜨게함 -> 기존 시큐리티가 가로채고 있음
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
1. WebSecurityConfigurerAdapter 를 상속 받아야 함.
2. @Configuration : IoC ▷ 빈으로 등록하여 메모리에 띄움.
3. @EnableWebSecurity ▷ 해당 파일로 security 활성화.
그리고난 후, 설정이 필요함.
1. 메서드 오버라이드 하기
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http); // 기본 설정 -> 이 코드가 있어서 시큐리티가 가로채서 기본 로그인 창이 뜨는 것임.
}
HttpSecurity http를 매개변수로 갖는 메서드 선택 후 재정의
1) super.configure(http); 주석 처리 전
super.configure(http); 를 지우면 기존 시큐리티가 갖고 있는 기능이 모두 비활성화됨.
2) super.configure(http); 주석 처리 후
2. overide 한 메서드 수정하기
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable(); // 토큰을 갖고 있는지 아닌지 구분하지 않겠다.
http.authorizeRequests()
.antMatchers("/", "/user/**", "/image/**", "/subscribe/**", "/comment/**").authenticated()
// 인증된 사용자의 경우 다음과 같은 요청 url을 가질 경우 인증이 필요하고(authenticated),
.anyRequest().permitAll();
// 그 외의 모든 요청은 허용하겠다.
}
이렇게 코드를 작성한 뒤 실행시켜보면,
403 에러코드가 반환됨.
403번 에러코드 : Forbidden / 서버가 허용하지 않는 웹 페이지나 미디어를 사용자가 요청할 때 웹 서버가 반환하는 HTTP 상태 코드
출처 : 위키백과
따라서 antMatchers에 명시되어있지 않은 url의 경우에는
사용자가 로그인 페이지로 이동을 시켜 로그인을 하도록 유도하거나 회원가입을 할 수 있도록 설정을 하는 것이 좋다!
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable(); // 토큰을 갖고 있는지 아닌지 구분하지 않겠다.
http.authorizeRequests()
.antMatchers("/", "/user/**", "/image/**", "/subscribe/**", "/comment/**").authenticated()
.anyRequest().permitAll()
.and()
.formLogin()
.loginPage("/auth/signin") // GET 로그인 페이지의 요청주소 명시하기!
.loginProcessingUrl("/auth/signin")// post -> 스프링 시큐리티가 로그인 프로세스 진행
.defaultSuccessUrl("/");
}
- defaultSuccessUrl("/") : login 이 성공적으로 이루어졌을 경우 보내는 주소
이런식으로 스프링 시큐리티 초기 설정을 할 수 있다는 것을 배웠다!
'👩💻 BackEnd > 🍃 스프링부트 [SpringBoot]' 카테고리의 다른 글
[SpringBoot] 21강 전처리와 후처리 (1) | 2024.01.04 |
---|---|
[SpringBoot] 19강 CSFR 토큰 해제 (0) | 2024.01.02 |
15강 스프링 부트 Controller - Redirection (0) | 2023.12.28 |
[Springboot] Gradle 터미널에서 빌드 (0) | 2023.10.18 |
[SpringBoot] 서비스의 인증과 권한 부여 (0) | 2023.09.14 |