본문 바로가기
Spring/Spring-Security

스프링 시큐리티 설정 추가

by YoonJong 2022. 9. 14.
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

댓글