BE전문가 프로젝트

4-0 Authorization(인증) - 프로세스 설명 본문

SpringBoot Security

4-0 Authorization(인증) - 프로세스 설명

원호보고서 2023. 7. 8. 22:00

1. 로그인 요청

  • 사전에 정의한 URL("/login")을 요청하면 Spring Security가 낚아채서 로그인을 진행시킨다.

 

2. 토큰 생성

  • 입력한 parameter(Email과 password)을 이용하여 토큰을 생성한다.
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginDto.getEmail(), loginDto.getPassword());

 

3. authenticate 메소드 실행

  • 생성된 토큰을 authenticate method를 실행하면 UserDetailsService의 loadUserByUsername을 호출한다.
  • loadUserByUsername는 String 타입의 파라미터를 받도록 되어있는데 앞에서 받았던 토큰의 첫번째 파라미터가 바로 username 즉 loadUserByUsername에서 입력받는 파라미터이다.

 

4. Authentication 객체 생성

  • 로그인이 성공적으로 진행되면 Security session에 사용자의 정보가 저장이 되는데 이곳을 Security Context Holder라고 한다.
  • Security Context Holder에 들어가는 객체 타입이 따로 존재하는데 이 타입이 바로 Authentication 객체 타입이다.
  • 또한 Authentication객체안에 User Object 타입 즉 사용자의 정보가 정의되어 있어야하는데 이 타입이 UserDetails 타입 객체이다. (아래의 그림 참고)

  • UserDetail의 method를 자세히 보면 getPassword라는 method가 있는데 앞에서 받은 토큰의 두번째 파리미터 즉 패스워드와 DB에 저장되어 있는 User의 패스워드를 비교하여 동일할 시에 Authentication 객체를 만들어 필터체인으로 리턴해준다.

 

 

Comments