본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
스프링 시큐리티
스프링 시큐리티는 스프링 기반 애플리케이션의 인증과 권한을 담당하는 스프링의 하위 프레임워크이다.
- 인증(Authenticate)은 로그인을 의미한다.
- 권한(Authorize)은 인증된 사용자가 어떤 것을 할 수 있는지를 의미한다.
스프링 시큐리티 설치
스프링 시큐리티 사용을 위해 다음과 같이 build.gradle 파일에 의존성을 추가
dependencies{
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.1.RELEASE'
}
스프링 시큐리티와 이와 관련된 타임리프 라이브러리를 사용하도록 설정했다. "Refresh Gradle Project"를 수행하여 필요한 라이브러리를 설치한 후 로컬서버도 재시작 한다
thymeleaf-extras-springsecurity6
thymeleaf-extras-springsecurity6 패키지를 사용하기 위해 뒤에 3.1.1.RELEASE과 같은 버전 정보를 추가했다. thymeleaf-extras-springsecurity6 패키지는 스프링부트가 자체적으로 관리하는 패키지이기 때문에 버전 정보가 필요없지만 현재 사용중인 스프링부트 버전인 3.0.0 버전에서는 위와 같은 버전 정보를 입력하지 않으면 오류가 발생한다. 만약 버전 정보를 제거하고 사용하더라도 오류가 없다면 버전 정보 없이 사용해도 된다.
스프링 시큐리티 설정
스프링 시큐리티를 설치하고 로컬서버를 재시작한 후에 localhost에 접속해 본다.
스프링 시큐리티는 기본적으로 인증되지 않은 사용자는 서비스를 사용할 수 없게끔 되어 있다. 따라서 인증을 위한 로그인 화면이 나타나는 것이다. 하지만 이러한 기본 기능은 그대로 적용하기에는 곤란하므로 시큐리티의 설정을 통해 바로 잡아야 한다.
다음과 같이 SecurityConfig.java 파일을 작성
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers(new AntPathRequestMatcher("/**")).permitAll())
;
return http.build();
}
}
@Configuration은 스프링의 환경설정 파일임을 의미하는 애너테이션이다. 여기서는 스프링 시큐리티의 설정을 위해 사용되었다. @EnableWebSecurity는 모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만드는 애너테이션이다.
@EnableWebSecurity 애너테이션을 사용하면 내부적으로 SpringSecurityFilterChain이 동작하여 URL 필터가 적용된다.
스프링 시큐리티의 세부 설정은 SecurityFilterChain 빈을 생성하여 설정할 수 있다. 다음 문장은 모든 인증되지 않은 요청을 허락한다는 의미이다. 따라서 로그인을 하지 않더라도 모든 페이지에 접근할 수 있다.
http
.authorizeHttpRequests(auth -> auth
.requestMatchers(new AntPathRequestMatcher("/**")).permitAll())
;
'패스트캠퍼스 강의' 카테고리의 다른 글
[24일차] 50일 포트폴리오 챌린지 (1) | 2023.08.31 |
---|---|
[23일차] 50일 포트폴리오 챌린지 (0) | 2023.08.30 |
[21일차] 50일 포트폴리오 챌린지 (0) | 2023.08.28 |
[20일차] 50일 포트폴리오 챌린지 (1) | 2023.08.27 |
[19일차] 50일 포트폴리오 챌린지 (0) | 2023.08.26 |