[Spring Boot] 스프링 시큐리티

SEOP·2024년 6월 15일
0
post-thumbnail

인증과 인가의 개념

인증

: 해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인
ex)게시판 보는 것은 로그인 하지 않아도 가능, 댓글을 작성하려면 로그인 필요
로그인이라는 인증 절차를 거쳐야 한다.

인가

: 인증 과정 이후 일어난다. 커뮤니티 관리자 페이지에 접근하는 URL을 입력했을 때 해당 URL은 커뮤니티 관리자만 접근 가능해야 한다. 접근하는 사용자가 해당 URL에 대해 인가된 회원인지 검사하는 것이다.

스프링 시큐리티 설정 추가하기

1. security dependency 추가

<!--security dependency를 위한 의존성 주입-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>	
</dependency>

xml 파일에 의존성 주입만 했을 뿐인데, 원래 들어갈 수 있었던 예제 주소에 로그인을 필요로 한다.

아무 설정을 안했을 경우, UserName은 user, 비밀번호는 console창에 있는 랜덤값이다

로그인하면 원래 작성했던 예제 파일이 열린다.

주소창에 localhost/logout을 입력하니, 로그아웃이 가능하다.

2. 스프링 시큐리티 설정

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();
    }

}
profile
응애 나 애기 개발자

0개의 댓글