728x90
시큐리티 의존성만 추가하고 실행하면 모든 요청에 인증을 해야한다.
각 페이지마다 필요한 권한과 인증의 유무가 다른데, 확인하고 이후 설정해야한다.
EX ) 인증이 필요없는 경우 : 상세페이지 화면, 게시물 조회 등
인증이 필요한 경우 : 주문, 글쓰기, 댓글 등
관리자 권한이 필요한 경우 : 상품 등록 등
의존성 추가하기 - gradle
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
해당 의존성을 추가하면 모든 요청에 대해 인증을 요청한다.
로그인 페이지로 이동하게 되는데,
스프링에서 제공하는 아이디는 user 이고, 비밀번호는 애플리케이션을 실행할 때 콘솔창에서 나오는 password 이다.
로그인이 완료되었으면 , 로그아웃도 할 수 있다.
URL 에 localhost8080/logout을 입력하면 로그아웃을 실행할 수 있다.
SecurityConfig 작성
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 // @EnableWebSecurity + 상속 -> 오버라이딩을 통해 보안설정을 커스터마이징할 수 있다.
public class SecurityConfig extends WebSecurityConfigurerAdapter {
/**
* http 요청에 대한 보안을 설정
* 페이지 권한설정, 로그인 페이지 설정, 로그아웃 메소드 등에 대한 설정 작성 가능
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
}
/**
* 비밀번호를 데이터베스에 그대로 저장했을 경우, 데이터베이스 노출 시 비밀번호가 그대로 노출된다.
* BCryptPasswordEncoder 의 해시 함수를 이용하여 비밀번호를 암호화하여 저장
* Bean 을 이용하여 등록
*/
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
728x90
'Spring > Spring-Security' 카테고리의 다른 글
SpringSecurity 와 JWT 의 구조, 동작 과정 (0) | 2022.10.23 |
---|---|
SpringSecurity DB 없이 테스트 방법 (0) | 2022.10.20 |
JWT (Json Web Token) 의 개념 (0) | 2022.10.19 |
세션(서버) 기반 VS 토큰 기반 차이 (0) | 2022.10.19 |
스프링 시큐리티 소개 (0) | 2022.09.14 |
댓글