0. 프로젝트 소개(Spring Security) 및 Security에 대하여
1. User Entity 생성(Spring Security)
2. User 회원가입 (Spring Secureity)
3.Jwt의 사용 이유 (Spring Security)
4. Authorization(인증)
- 4-0 Authorization(인증) - 프로세스 설명
- 4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성
- 4-2 Authentication(인증) - UsernamePasswordAuthenticationfilter 생성
- 4-3 Authentication(인증) - CorsFilter(선택사항)
- 4-4 Authentication(인증) - SecurityConfig
5. Authorization(인가)
- 5-1 Authorization(인가) - Jwt 인가 관련 에러 처리
- 5-2 Authorization(인가) - Jwt 인가 서비스 로직 추가
- 5-3 Authorization(인가) - AuthorizationFilter 생성
- 5-4 Authorization(인가) - SecurityConfig에 인가 관련 method 추가
6. OAuth
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 객체를 만들어 필터체인으로 리턴해준다.
'SpringBoot Security' 카테고리의 다른 글
4-2 Authentication(인증) - UsernamePasswordAuthenticationfilter 생성 (0) | 2023.07.09 |
---|---|
4-1 Authentication(인증) - UserDetails, UserDetailsService 및 JwtService 생성 (0) | 2023.07.09 |
3. Jwt의 사용 이유 (Spring Security) (0) | 2023.06.28 |
2. User 회원가입 (Spring Secureity) (0) | 2023.06.27 |
1. User Entity 생성(Spring Security) (0) | 2023.06.25 |