본문 바로가기
Memo/BootCamp : TIL

[Day 98] OAuth2 인증

by 달의 조각 2022. 9. 28.

학습 주제

 

OAuth2란?

JWT 자격 증명을 위한 로그인 구현
JWT를 이용한 자격 증명 및 검증 구현

 


 

새롭게 배운 내용

 

2022.09.28 - [Back-End/Spring Security] - OAuth2 인증

 

OAuth2 인증

OAuth2란? 보통은 애플리케이션에서 해당 서비스를 이용하는 사용자의 크리덴션을 관리하는 것이 일반적이다. 만약 사용자 Google 계정의 크리덴션과 연동되는 서비스를 제공한다고 가정해 보자.

cookiee.tistory.com

 

 

JWT의 전체적인 내용 정리

 

 

보강할 내용

 

🤔

  1. 공개키와 비밀키 개념 정리
  2. JwtTokenizer 클래스의 encodeBase64SecretKey()
    👉 Secret Key가 Plain Text 형태의 byte[] 타입인가?
    👉 'jjwt에서 Plain Text 자체를 Secret Key로 사용하는 것은 암호화적인 작업에 사용되는 Key가 항상 바이너리(byte array)라는 사실과 맞지 않아서 권장하지 않는다'는 말이 정리가 안 된다.
  3. CustomAuthorityUtils 클래스
    👉 위의 두 줄과 아래 두 줄은 무슨 차이이지?
private final List<GrantedAuthority> ADMIN_ROLES = AuthorityUtils.createAuthorityList("ROLE_ADMIN", "ROLE_USER");
private final List<GrantedAuthority> USER_ROLES = AuthorityUtils.createAuthorityList("ROLE_USER");
private final List<String> ADMIN_ROLES_STRING = List.of("ADMIN", "USER");
private final List<String> USER_ROLES_STRING = List.of("USER");

 

 

회고

 

  오늘은 OAuth2에 대해 학습했다. 요즘은 많은 웹이나 앱 애플리케이션에서 로그인할 때 네이버나 카카오, 구글 등의 로그인 인증을 통해 인증 처리를 할 수 있도록 하고 있다. 이 기능을 참 편리하게 사용하고 있었기에 예전부터 어떻게 구현되어 사용되는지 궁금했었다. 단순히 로그인을 편리하게 해 주는 기능이라고 생각해 왔었는데 내부적으로는 사용자 크리덴셜의 보안 문제와도 관련이 있다는 것을 알았다!

OAuth2에 대해 학습하기 이전에 어제 공부했던 JWT가 더 필수적이고 중요하다고 배웠고 제대로 정리가 안 되었다는 판단에 오늘은 OAuth2 내용을 집중해서 본 후, 남은 시간에 JWT를 다시 처음부터 정리했다. 어제는 중간중간에 흐름이 끊기기도 하고 시간에 쫓기는 듯한 압박에 공부 내용이 머릿속에 흡수가 되지 않았었다. 오늘은 오늘 학습 내용을 오전 중에 정리해서 여유가 생겼기에 마음이 편했다. 그래서인지 어제는 코드상에서 JWT 인증 흐름의 어떤 포인트에 와 있는지 파악이 안 되었었는데 머릿속에서 정리가 잘 되었다. 어제는 코드 파악이 안 돼서 다 잘 모르는 상태였다면, 오늘은 보강할 내용에 적어 둘 궁금증들도 생겼다. 내일 다시 천천히 생각해 보고 질문해야겠다!

노력한 부분

  • JWT 인증의 전체 플로우가 코드상에서 파악이 안 됨 👉 직접 그림 그려 보기, 클래스별 기능을 정리
  • 먼저 각 클래스의 역할을 생각해서 이를 위해 메소드들이 어떤 기능을 해야 하는지 적어 보고 정리하기
  • 조급하게 생각하지 말기

주말이 되어서야 JWT를 정리하게 될 줄 알았는데 다행히 오늘 공부할 양을 금방 봐서 JWT에 대해 제대로 공부할 수 있었다. 사실 당연하게도 아직 모르는 부분이 더 많다. 주말에 다시 한번 더 정리한 내용을 공부해야겠다! 👍

 

★★★★★

 

댓글