본문 바로가기
TIL

항해99_TIL220530 (JWT)

by Hyeongjun_Ham 2022. 5. 31.

오늘은 JWT 강의에서 만든 순서 한번 적어보자

클래스 만드는거 중심으로..

 

1. SecurityConfig

  • @EnableWebSecurity : 기본적인 Web 보안을 활성화 하겠다.
  • authorizeRequests()는 HttpServletRequest를 사용하는 요청들에 대한 접근제한을 설정하겠다는 의미
  • antMatchers(path).permitAll()는 해당 path로 들어오는 요청은 인증없이 접근을 허용하겠다는 의미
  • .anyRequest().authenticated()는 나머지 요청은 모두 인증되어야 한다는 의미입니다.

 

2. Entity생성

  • @Entity : Database Table과 1:1로 매핑되는 객체
  • @Getter, @Setter, @builder, @AllArgsConstructor, @NoArgsConstructor 는 Get, Set, Builder, Constructor 관련 코드를 자동으로 생성
  • @JsonIgnore는 서버에서 Json 응답을 생성할때 해당 필드는 ignore

 

3. Security설정 추가

  • .ignoring() .antMatchers( "/h2-console/**" );
  • h2-console 페이지의 접근은 Spring Security 관련 로직을 수행하지 않도록 configure(WebSecurity web)를 오버라이드한 메소드를 새롭게 추가

 

 

4. JWT 관련 클래스 생성

  • TokenProvider : TokenProvider 빈은 정의한 jwt.secret, jwt.token-validity-in-seconds 값을 주입받도록 한다.
  • JwtFilter : JwtFilter빈은 TokenProvider를 주입받는다.
  • JwtSecurityConfig : JwtFilter를 Security 로직에 적용하는 역할을 수행.
  • JwtAuthenticationEntryPoint : 유효한 자격증명을 제공하지 않고 접근하려 할때 401 UNAUTHORIZED 에러를 리턴하기 위해 AuthenticationEntryPoint를 구현한 JwtAuthenticationEntryPoint 클래스를 작성
  • JwtAccessDeniedHandler : 필요한 권한이 존재하지 않은 경우 403 FORBIDDEN 에러를 리턴하기 위해 AccessDeniedHandler를 구현한 JwtAccessDeniedHandler 클래스를 작성합니다.

 

5. Security설정 추가

 

6. Dto 추가

  • LoginDto
  • TokenDto
  • UserDto

7. UserRepository 추가

 

8. CustomUserDetailsService 추가

  • UserDetailsService를 implements하고 위에서 만들었던 UserRepository를 주입받음 

 

9. AuthController 추가

  • TokenProvider, AuthenticationManagerBuilder 를 주입받는 AuthController 클래스

10. SecurityUtil 추가

 

11. UserService 추가

  • UserRepository, PasswordEncoder를 주입받는 UserService 클래스를 생성

12. UserController 추가

  • UserService를 주입받음

 

 

 

이것이 정답은 아니다. 큰 흐름 한번 보려고 적어봤는데 쉽지않네

강의 들을땐 따라갈만하다가 혼자 생각하면 바로 안 꺼내진다.

 

 

- 내일 할 일

강의를 듣기보다 주어진 과제에 올인해서 최대한 만들어봐야겠다.

일단 굴러가게하고 뒤에 이쁘게 다듬어야지

'TIL' 카테고리의 다른 글

항해99_TIL220601 (연관관계 매핑)  (0) 2022.06.02
항해99_TIL220531 (Builder)  (0) 2022.05.31
항해99_WIL220529 (DI, IoC, Bean)  (0) 2022.05.29
항해99_TIL220528 (JWT)  (0) 2022.05.29
항해99_TIL220527 (Spring Security란)  (0) 2022.05.28