fianl 프로젝트에서 개발 담당 -> 회원가입 & 로그인 & 마이페이지
내가 개발할 프로젝트를 위해 스프링 시큐리티를 적용해 보도록 하겠다.
스프링 시큐리티란?
스프링 기반 웹 애플리케이션의 인증과 권한을 담당하는 스프링의 하위 프레임워크이며
주로 인증(Authentication)과 인가(Authorization) 기능을 제공하여, 사용자가 누구인지 확인하고,
그 사용자가 어떤 자원에 접근할 수 있는지를 관리한다. -> 로그인과 권한 관리 기능을 구현할 때 주로 사용
**인증 : 사용자 신원을 확인하는 프로세스 (로그인)
**인가 : 특정 리소스에 접근하려는 회원의 권한을 확인하는 것 (인증 이후)
**권한 : 인증된 사용자가 어떤 일을 할 수 있는지 관리하는 것
스프링부트에 스프링 시큐리티 적용
build.gradle -> dependencies에 의존성 추가
// 스프링 시큐리티 의존성 추가
// Spring Security의 기본 기능 추가
implementation 'org.springframework.boot:spring-boot-starter-security'
//Thymeleaf 템플릿 엔진과 Spring Security를 연동
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
// 스프링 시큐리티 테스트를 위한 의존성 추가
testImplementation 'org.springframework.security:spring-security-test'
스프링 시큐리티 설정하기
스프링 시큐리티를 적용 후 서버에 재접속 하면 위와 같은 화면이 나올 것이다.
스프링 시큐리티는 인증되지 않은 사용자가 웹서비스를 사용하지 못하도록 설정이 되어있다.
로그인을 하지 않아도 사용할 수 있도록 스프링 시큐리티를 설정하도록 하겠다.
설정 파일은 따로 패키지를 만들어서 분리해주고, SecurityConfig.java로 이름을 설정했다
화면에서의 아이디는 user이고 비밀번호는 서버시작을 할때 console창에 아래와 같이 생성될 것이다.
@Configuration // 설정파일
@EnableWebSecurity // 웹사이트 보안 활성화 (모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만드는 어노테이션)
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http //authorizeHttpRequests 어떤 요청에 대해 어떤 권한이 필요한지 설정
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests //.requestMatchers : 특정 URL 지정
.requestMatchers("/", "/sms/send", "/login", "/signUp", "/idCheck", "/signForm",
"/css/**", "/js/**", "/images/**", "/fonts/**", "/scss/**").permitAll() // 특정 경로에 대한 접근 권한 허용
.anyRequest().authenticated()
// .anyRequest() : 위 URL 이외 요청은 .authenticated() 인증 필요
)
.csrf(AbstractHttpConfigurer::disable); // CSRF 비활성화 (테스트용)
return http.build();
}
@Bean
public PasswordEncoder passwordEncoder() { // 비밀번호 암호화
return new BCryptPasswordEncoder();
}
}
일단은 이 정도로 설정을 해 놓았다.
이제 회원가입 개발과정을 블로그에 작성하도록 하겠다!