Spring Security 로그인 구현

2462 단어 SpringSpring

Authentication 인증

인증(authentication)은 자신이 누구라고 주장하는 사람을 확인하는 절차이다.
사용자가 누구인지를 증명하는 과정이다 (Who are you?)

Authorization 권한 부여(인가)

권한부여(authorization)는 가고 싶은 곳으로 가도록 혹은 원하는 정보를 얻도록 허용하는 과정이다. 사용자의 권리를 검증하는 과정이다 (What you can do)


Spring Security

로그인 페이지를 구현하기 위해서는 Spring Security의존성을 다운받아야한다.

로그인 과정

일반적으로 사용자가 로그인을 하게되는 과정에 대해 살펴보면 아래와 같다

  1. 로그인 페이지 접근
  2. 로그인에 필요한 ID, 비밀번호 제공
  3. Cookie에 사용자의 session id를 작성
  4. session id를 가진 요청에 대하여 사용자 검증

Spring Security의 동작 구조


SecurityConfig에서 WebSecurityConfigurerAdapter을 상속 받아 UserDtailsService로 spring Security에서 유저의 정보를 가져온다.


@Configuration
@EnableWebSecurity                      //스프링 시큐리티의 웹 보안 기능의 초기화 및 설정들을 담당
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    private final UserDetailsService userDetailsService; //spring Security에서 유저의 정보를 가져오는 인터페이스
    private final NaverOauthService naverOauthService;

    public WebSecurityConfig(
            @Autowired CustomUserDetailsService customUserDetailsService,
            @Autowired NaverOauthService naverOauthService){
        userDetailsService = customUserDetailsService;


        this.naverOauthService = naverOauthService;
    }



configure(HttpSecurity http)함수를 사용해 보안 설정을 정의할 수 있다.
나의 경우 MVC 패턴으로 view를 부트스트랩에 적용하면서 Css, js등의 내용도 같이 추가가 필요했다.

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest()
                .permitAll()
        ;
    }
}


프로젝트에대한 설명

  1. 컨트롤러를 통해 id(username)과 pw를 받는다
  2. Dto -> Repository -> Entity로 저장되는 순서인데 여기서 Repository의 findByUsername 함수가 들어온값을 CustomUserDetailsService 클래스에서 검증받는다
  3. WebSecurityConfig에서 결과에따라 url로 보내도록 함



참고자료

https://velog.io/@seongwon97/security

좋은 웹페이지 즐겨찾기