: 해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인
ex)게시판 보는 것은 로그인 하지 않아도 가능, 댓글을 작성하려면 로그인 필요
로그인이라는 인증 절차를 거쳐야 한다.
: 인증 과정 이후 일어난다. 커뮤니티 관리자 페이지에 접근하는 URL을 입력했을 때 해당 URL은 커뮤니티 관리자만 접근 가능해야 한다. 접근하는 사용자가 해당 URL에 대해 인가된 회원인지 검사하는 것이다.
<!--security dependency를 위한 의존성 주입-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
xml 파일에 의존성 주입만 했을 뿐인데, 원래 들어갈 수 있었던 예제 주소에 로그인을 필요로 한다.
아무 설정을 안했을 경우, UserName은 user, 비밀번호는 console창에 있는 랜덤값이다
로그인하면 원래 작성했던 예제 파일이 열린다.
주소창에 localhost/logout을 입력하니, 로그아웃이 가능하다.
package com.shop.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity /*WebSecurityConfigurerAdapter를 상속받는 클래스에 @EnableWebSecurity 선언하면 SpringSecurityFilterChain이
자동으로 포함. WebSecurityConfigurerAdapter를 상속받아 메소드 오버라이딩을 통해 보안 설정 커스터마이징 가능*/
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception { /*http 요청에 대한 보안 설정. 페이지 권한 설정, 로그인 페이지
설정, 로그아웃 메소드 등에 대한 설정 작성*/
}
@Bean
public PasswordEncoder passwordEncoder() { /*비밀번호를 데이터베이스에 그대로 저장했을 경우, 데이터베이스가 해킹당하면 고객의 회원
정보가 그대로 노출된다. 이를 위해, BCryptPasswordEncoder의 해시 함수를
이용하여 비밀번호를 암호화하여 저장. @Bean 등록한다.*/
return new BCryptPasswordEncoder();
}
}