g-market / b-shop-backend

0 stars 0 forks source link

feat: 로컬 환경에서 Oauth Mocking 및 인증 인가 작업 - [merged] #56

Closed halucinor closed 1 year ago

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 6, 2023, 13:30

Merges feature/hiworks-mock -> develop

작업 내용

Oauth Mocking 및 인증 인가 비즈니스 로직 추가

스크린샷

image

주의사항

Closes #19

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 6, 2023, 13:30

requested review from @AnTaeWook

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/mapper/HiworksProfileMapper.java line 25

이 메서드는 MapStruct 기본 기능으로 해결해 볼 수 있어 보입니다!!
제가 매퍼에 대해 잘 모르지만 복잡한 로직이 없은이 디폴트 값에 주의하며 작업하면 될 것 같습니다

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/mapper/LoginResponseMapper.java line 23

member.getPhoneNumber()의 결과가 null 여부에 따라 분기를 수행하게 되는 것 같습니다.
매퍼에 비즈니스 로직 성격이 강한 코드가 들어가는 것이 적절할까에 대한 고민이 생기네요.
가입했느냐 안했느냐 여부는 서비스레이어에서 판단하는 건 어떨까요?

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/security/client/LocalHiworksOauthClient.java line 28

Local 개발용 코드긴 하지만, (6, 8), (5,7)의 의미를 코드를 읽는 입장에서 파악하기 힘듭니다.
의미를 갖는 네이밍된 변수로 변경하는 것은 어떤가요?

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/security/client/LocalHiworksOauthClient.java line 37

마찬가지로, "@gabia.com" 이라는 스트링이 반복되괴 있는데, 유지보수성와 변경성을 위해 변수로 빼는 것이 어떨까요?

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 41

ObjectMapper의 생성비용은 매우 큽니다. 스프링 팩토리에서 기본적으로 생성해 주는 객체인데, 주입받는 다른 방법을 고민해보시는 건 어떨까요

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 45

타임아웃을 10초로 설정하신 이유가 있을까요? 매직넘버는 빼주시면 좋을 것 같습니다.

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/security/support/AuthArgumentResolver.java line 28

확실하지 않게 드리는 질문인데요,
CurrentMember 라는 어노테이션이 Integer 클래스로 선언되면 어떻게 되나요?

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/security/support/AuthArgumentResolver.java line 37

요구사항에서, 사내 서비스인 만큼 외부 인원은 접근할 수 없어야 하는 것으로 이해했습니다.
auth가 null이라면, 더 이상 흐름을 진행하지 않고 오류를 뱉는 것은 어떨까요?
인증/인가에 대해 잘 몰라서 궁예식 코드리뷰 드리는점 양해 부탁드립니다..

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/service/AuthService.java line 46

개인적인 취향인데요, member.getRole() 은 따로 변수로 빼지 않고 member.getId() 만 변수로 빼서 사용하신 이유가 있을까요?

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/service/AuthService.java line 52

관리자로 등록되지 않으셨습니다. -> 회원으로 등록되지 않으셨습니다 로 바뀌면 좋을 것 같습니다

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/service/MemberService.java line 28

final 키워드 빠졌어요 제이미!

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/main/java/com/gabia/bshop/util/AuthTokenExtractor.java line 24

매직넘버의 의미를 확실히 네이밍해주면 좋을 것 같습니다!

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/test/java/com/gabia/bshop/security/client/LocalHiworksOauthClientTest.java line 41

when 스코프는 로직 하나만 작성해서 하나에 대한 검증만 실시하는 것이 좋습니다.
그게 불가능하다면 잘못 짜여진 코드라고 어디서 들은 것 같습니다. 테스트 코드를 분리하거나, 코드에 대한 고민을 해야할 것 같습니다.!

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/test/java/com/gabia/bshop/security/redis/RefreshTokenServiceImplTest.java line 55

given(refreshTokenRepository.findById(refreshToken.refreshToken())).willReturn( Optional.empty()); 절이,
//when의 행위를 검증하는 스코프에 있는 것이 맞을까요?
이 테스트에서 검증해야 하는 행동은 결국 refreshTokenRedisService.findToken(refreshToken.refreshToken())일 것 같습니다.

halucinor commented 1 year ago

In GitLab by @AnTaeWook on Feb 7, 2023, 09:42

Commented on src/test/java/com/gabia/bshop/security/redis/RefreshTokenServiceImplTest.java line 70

void 저장된_리프레시_토큰이_없을_때_예외를_던진다() 와 동일한 리뷰입니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:02

Commented on src/main/java/com/gabia/bshop/security/client/LocalHiworksOauthClient.java line 28

이 부분은 Magic Number의 의미를 좀 더 구체화하겠습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:02

Commented on src/main/java/com/gabia/bshop/security/client/LocalHiworksOauthClient.java line 37

변수로 슬쩍위로 빼겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:02

Commented on src/main/java/com/gabia/bshop/mapper/HiworksProfileMapper.java line 25

Reference: https://mapstruct.org/documentation/stable/reference/html/#default-values-and-constants

이걸로 변경해보겠습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:02

Commented on src/main/java/com/gabia/bshop/mapper/LoginResponseMapper.java line 23

저도 이 부분에 대해서 고민을 좀 더 해보고 추후 리팩토링하고 다시 커밋 올리겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:03

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 41

Client가 한번 생성되도록 Config에서 Bean 으로 등록되어 mapper가 한번 생성된다고 생각하였습니다. 주입 받는 방식으로 코드를 다시 구성해보겠습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:06

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 41

Config에서 Bean으로 Client를 등록하여 한번 생성되고 재사용한다 생각헀는데, 스프링에서 빈으로 mapper를 등록해주기에 이를 주입 받는 방식으로 변경하겠습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:18

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 45

  1. TimeOut을 설정하지 않을시에는 서버 연결에 문제가 있을 때 오랜 시간 대기할 수 있습니다.
  2. TimeOut을 엄청 짧게 가져갈시에 `org.apache.http.conn.ConnectTimeoutException가 발생할 수 있습니다. image
  3. chrome 개발자 도구에서 네트워크 추적 개발자 도구 창이 10초를 감안하여 작성하였습니다.
  4. 최적의 타임아웃 시간을 찾거나 좀 더 이유를 찾아보겠습니다!

:)

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:19

Commented on src/main/java/com/gabia/bshop/security/support/AuthArgumentResolver.java line 28

네 바로 수정 들어가겠습니다!

변경점은 추후 커멘트로 남기겠습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:23

Commented on src/main/java/com/gabia/bshop/security/support/AuthArgumentResolver.java line 37

-> authorization Header에 담기는 것은 accessToken(저희 백엔드 서버에서 만든 Jwt Token)으로 사용자의 정보를 담고 있습니다. 즉, 사용자를 판별하는 용도로 사용되고 있습니다.

이에 따라 authorization Header가 없는 경우는 로그인 하기 전입니다.

AuthArgumentResolver는 MemberPayload를 controller에서 request가 들어올 떄 사용되는 데 이 떄 위에 언급하신 auth가 null이라면, 더 이상 흐름을 진행하지 않고 오류를 뱉는 것AuthInterceptor단에서 처리하였습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:24

Commented on src/main/java/com/gabia/bshop/service/AuthService.java line 46

이 부분은 코드를 한번 더 읽어보고 커멘트 남기겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:24

Commented on src/main/java/com/gabia/bshop/service/AuthService.java line 52

수정하도록 하겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:26

Commented on src/main/java/com/gabia/bshop/service/MemberService.java line 28

final 키위드 붙이겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:26

Commented on src/main/java/com/gabia/bshop/util/AuthTokenExtractor.java line 24

수정하도록하겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:26

Commented on src/test/java/com/gabia/bshop/security/client/LocalHiworksOauthClientTest.java line 41

-> 제가 테스트 코드의 normal, Admin 을 두 가지를 동시에 테스트를 작성하는데 이는 분리를 잘 못한 것 같습니다. 분리한 후 추후 커밋 올리겠습니다.

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:26

Commented on src/test/java/com/gabia/bshop/security/redis/RefreshTokenServiceImplTest.java line 55

수정하도록하겠습니다!

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 7, 2023, 10:26

Commented on src/test/java/com/gabia/bshop/security/redis/RefreshTokenServiceImplTest.java line 70

넵!

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:24

Commented on src/main/java/com/gabia/bshop/controller/AuthController.java line 51

logout 시 main 페이지로 redirect 하는건 어떨까요?

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:28

Commented on src/main/java/com/gabia/bshop/dto/request/HiworksTokenRequest.java line 9

@JsonProperty를 설정해주게되면 clientId가 client_id로 변경되어 response body에 담기나요?

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:29

Commented on src/main/java/com/gabia/bshop/dto/response/AccessTokenResponse.java line 3

개행이 되어있지 않은거 같습니다

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:31

Commented on src/main/java/com/gabia/bshop/dto/response/HiworksTokenResponse.java line 7

HiworksProfileResponse 에서는

@JsonIgnoreProperties(ignoreUnknown = true)

가 있는데 TokenResponse에는 없어도 되는건가요?

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:32

Commented on src/main/java/com/gabia/bshop/dto/response/IssuedTokensResponse.java line 6

다른 record와 동일하게 개행이 있으면 좋을거 같습니다~

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:34

Commented on src/main/java/com/gabia/bshop/dto/response/HiworksTokenResponse.java line 19

user_no -> userNo

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:40

Commented on src/main/java/com/gabia/bshop/exception/CustomException.java line 8

CustomException을 만들 때 그냥 Exception 이 아닌 RuntimeException을 상속받은 이유가 있을까요?

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:54

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 52

나중에 공통적으로 예외처리를 수행하는 ExceptionHandler를 만들어 중복되는 코드를 줄일 수 있을 거같아요. 어떻게 만들지 같이 고민해보면 좋을거 같습니다.

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 10:56

Commented on src/main/java/com/gabia/bshop/security/provider/JwtProvider.java line 90

bodyid에도 final키워드를 붙하는게 맞을까요?

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:06

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 41

changed this line in version 2 of the diff

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:06

Commented on src/main/java/com/gabia/bshop/security/client/ProdHiworksOauthClient.java line 45

changed this line in version 2 of the diff

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:06

Commented on src/main/java/com/gabia/bshop/dto/response/AccessTokenResponse.java line 3

changed this line in version 2 of the diff

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:06

Commented on src/main/java/com/gabia/bshop/dto/response/IssuedTokensResponse.java line 6

changed this line in version 2 of the diff

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:06

Commented on src/main/java/com/gabia/bshop/dto/response/HiworksTokenResponse.java line 19

changed this line in version 2 of the diff

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:06

added 71 commits

Compare with previous version

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 11:10

Commented on src/main/java/com/gabia/bshop/security/provider/JwtProvider.java line 97

Exception 별로 정확하게 메시지를 나누는게 좋을거 같다고 생각합니다.

halucinor commented 1 year ago

In GitLab by @halucinor on Feb 8, 2023, 11:11

Commented on src/main/java/com/gabia/bshop/security/redis/RefreshToken.java line 12

fianl 키워드가 빠진거 같아요

halucinor commented 1 year ago

In GitLab by @haaeee on Feb 8, 2023, 11:11

added 1 commit

Compare with previous version