Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[✨feat] 소셜 로그인 관련 기능 구현 #83

Merged
merged 116 commits into from
Feb 26, 2025
Merged

[✨feat] 소셜 로그인 관련 기능 구현 #83

merged 116 commits into from
Feb 26, 2025

Conversation

0-tae
Copy link
Contributor

@0-tae 0-tae commented Feb 25, 2025

🚀 What’s this PR about?

  • 작업 내용 요약:
    • 회원가입 로직 수정
    • 소셜 로그인
    • 토큰 재발급
    • 인가코드를 통해 인증하기

🛠️ What’s been done?

  • 주요 변경사항을 상세히 기술하세요. (예: 새로운 기능 추가, 버그 수정, 코드 리팩토링 등)
    • 회원가입 코드 복원
    • 소셜 로그인 (Sign-In) API 구현
    • 클라이언트로 부터 인가 코드를 받고 인증하는 API 구현
    • AccessToken 재발급 구현
    • GlobalLogger 구현
    • AuthTokenResolver 구현 (신규 회원의 인증 정보 및 토큰 임시 저장)

🧪 Testing Details

  • 테스트 코드 및 결과: 작성한 테스트 코드와 주요 테스트 케이스를 설명하고, 통과된 테스트 결과를 요약해 주세요.
    • 기존 테스트 통과 하였습니다.
    • OauthService 관련 부분(회원가입, 토큰 재발급, 소셜 로그인, 인가 코드 인증) 은 통합 테스트로 대체했고, 테스트 통과 하였습니다.
      • 신규 사용자 일 경우
      • 기존 사용자인 경우
      • 액세스 토큰이 만료된 사용자의 경우
      • 리프레시 토큰이 만료된 사용자의 경우

👀 Checkpoints for Reviewers

  • 리뷰 시 확인할 사항:
  • 클라이언트에서 AuthType을 받지 않고 액세스 토큰을 O(1)로 인증 하는 방법이 없을까요?
    • OauthController의 reissue-token API처럼 액세스 토큰으로 소셜 사용자 인증을 수행할 때, AuthType이 제공되지 않아, 현재 가지고 있는 AuthType 모두를 순차적으로 조회하여 소셜 유저 정보 불러오기를 O(N)으로 수행합니다. 따라서 Kakao 토큰임에도 Google에 요청을 보내어 인증 실패를 겪은 후에 Kakao에 다시 요청을 보내어 인증 정보를 불러옵니다. 이로 인해 불필요한 외부 서버 연결이 일어나게 되는 문제가 발생하게 되는데, 자유롭게 의견 남겨주시면 감사 드리겠습니다.

🎯 Related Issues

0-tae added 30 commits February 17, 2025 17:56
- 관련 ErrorCode 메시지 추가
- try-catch 구문으로 예외 제어
- AuthInfo가 Member를 외래키로 가지도록 설정
- Member에서 refreshToken, authId, authType 값을 분리
- 멤버 생성 createMember 메소드 구현
- Member 생성에 필요한 AuthInfo 관련 파라미터 삭제
- auth를 제외한 모든 경로에 적용
- AuthInfo 생성을 이한 createAuthInfo 구현
- 카카오 서버 토큰 요청을 위한 requestToken 구현
- 내부에 KakaoErrorInfo 구현하여 에러 여부 확인
- 기존 Oauth 용어인 Code로 명칭 통일
- S3Storage Bean 주입 메소드 작성
- Object -> String 파라미터 타입 수정
0-tae added 25 commits February 23, 2025 18:03
# Conflicts:
#	src/main/java/org/noostak/auth/api/OauthController.java
- 관련하여 유효성 검증 수행
- 에러코드 추가
- AuthId를 키 값으로 사용하여 JwtToken을 지정된 시간동안 유지하는 기능 구현
- 스케줄링을 통해 만료된 JwtToken과 AuthId 정보를 삭제하는 기능 구현
- 멤버가 아닐 경우 인증 정보를 임시적으로 유지하는 로직 추가
- authId를 이용해서 임시 정보를 불러오는 로직 추가
- 클라이언트에게서 authType과 인가 코드를 받아 소셜 서비스에 인증하여, 멤버 여부, authId, 토큰을 반환하는 API 구현
- 기존 signUp에서 인가 코드를 통해 소셜 서비스를 인증하는 로직 제거
- authId를 통해서 서버 메모리에 저장된jwtToken을 조회하는 흐름으로 변경
- oauth-config.yml 파일을 working-directory에 추가
- AuthId, AuthType 도메인 변경으로 인한 패키지 import 수정
- findByMember_MemberId -> findByMemberId 수정
- null을 허용할 수 없도록 변경
- 파라미터로 받은 token에 대하여 유효성 검증을 수행하도록 로직 변경
@0-tae 0-tae self-assigned this Feb 25, 2025
@0-tae 0-tae added ✨ feat Something isn't working 🦖 용태 🦖 Further information is requested labels Feb 25, 2025
@0-tae 0-tae changed the title [feat] 소셜 로그인 관련 기능 구현 [✨feat] 소셜 로그인 관련 기능 구현 Feb 25, 2025
@0-tae 0-tae merged commit e400500 into develop Feb 26, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ feat Something isn't working 🦖 용태 🦖 Further information is requested
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants