-
Notifications
You must be signed in to change notification settings - Fork 0
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
Be/feature/#458 kakao OAuth #459
Commits on Jan 9, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 1159cf4 - Browse repository at this point
Copy the full SHA 1159cf4View commit details -
Configuration menu - View commit details
-
Copy full SHA for e74a78f - Browse repository at this point
Copy the full SHA e74a78fView commit details -
Configuration menu - View commit details
-
Copy full SHA for ba17d51 - Browse repository at this point
Copy the full SHA ba17d51View commit details -
- 사용자 정보를 성공적으로 가져왔을 때, kakao_account 안에 들어있는 정보를 별도의 클래스로 정의 - 동의항목으로 설정한 필드에 대해서만 작성
Configuration menu - View commit details
-
Copy full SHA for 9a311c7 - Browse repository at this point
Copy the full SHA 9a311c7View commit details -
- 멤버를 생성하는 create() 메서드를 호출할 때 사용하는 dto 정의 - fromKakao라는 static 메서드를 이용하여 dto를 생성하도록 구현
Configuration menu - View commit details
-
Copy full SHA for fd220eb - Browse repository at this point
Copy the full SHA fd220ebView commit details -
feat: OAuth REST API 요청 시 필요한 상수 정의
- METHODS: fetch의 method 필드에 넣어주는 HTTP 메서드값 - CONTENT_TYPE - OAUTH_URL : OAuth REST API URL
Configuration menu - View commit details
-
Copy full SHA for d7fc977 - Browse repository at this point
Copy the full SHA d7fc977View commit details
Commits on Jan 10, 2024
-
- 사용자의 회원가입 여부를 식별하기 위해 email 필드 추가 - 리프레시 토큰 DB에 저장 (최대 길이가 명시되어 있지 않아 text 타입으로 설정)
Configuration menu - View commit details
-
Copy full SHA for f64b2d6 - Browse repository at this point
Copy the full SHA f64b2d6View commit details -
Configuration menu - View commit details
-
Copy full SHA for c9ffc42 - Browse repository at this point
Copy the full SHA c9ffc42View commit details -
Configuration menu - View commit details
-
Copy full SHA for d47b90d - Browse repository at this point
Copy the full SHA d47b90dView commit details -
Configuration menu - View commit details
-
Copy full SHA for b2d3d0d - Browse repository at this point
Copy the full SHA b2d3d0dView commit details -
Configuration menu - View commit details
-
Copy full SHA for fda544e - Browse repository at this point
Copy the full SHA fda544eView commit details -
Configuration menu - View commit details
-
Copy full SHA for edcba65 - Browse repository at this point
Copy the full SHA edcba65View commit details -
- OAuth를 위한 서비스 정의 - 멤버 서비스를 주입받아 사용자 create, select, update 작업 수행 가능 - loginKakao : 인가코드로 카카오 로그인 수행 - getKakaoToken을 호출하여 액세스 토큰과 리프레시 토큰 발급 받음 - getOIDCuserInfo를 호출하여 사용자 정보 조회 - 조회한 사용자 정보를 바탕으로 이미 가입한 회원인지 확인 - 이미 존재하는 회원인 경우, 리프레시 토큰 갱신 - 신규 회원인 경우, 회원가입 진행 - logoutKakao : 카카오 로그아웃 수행
Configuration menu - View commit details
-
Copy full SHA for abe7557 - Browse repository at this point
Copy the full SHA abe7557View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5e95f74 - Browse repository at this point
Copy the full SHA 5e95f74View commit details -
- OAuth를 위한 컨트롤러 정의 - 현재 로그인, 로그아웃만 정의, 추후에 탈퇴 부분 추가 예정
Configuration menu - View commit details
-
Copy full SHA for 0165c53 - Browse repository at this point
Copy the full SHA 0165c53View commit details -
Auth 서비스에서 멤버 서비스를 이용 -> imports, providers에 멤버 관련 내용 추가
Configuration menu - View commit details
-
Copy full SHA for 1fbef16 - Browse repository at this point
Copy the full SHA 1fbef16View commit details -
Configuration menu - View commit details
-
Copy full SHA for 330b16e - Browse repository at this point
Copy the full SHA 330b16eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7462f86 - Browse repository at this point
Copy the full SHA 7462f86View commit details -
- findByEmail : 이메일로 사용자 조회 - updateRefreshToken : 리프레시 토큰 갱신
Configuration menu - View commit details
-
Copy full SHA for 9aacf66 - Browse repository at this point
Copy the full SHA 9aacf66View commit details -
- JwtPayloadDto : jwt를 만들 때 들어가는 필드 - KakaoAccessTokenInfo : 카카오 로그인에서 액세스 토큰에 대한 정보를 조회할 때 응답 바디 - KakaoRefreshTokenDto : 카카오 로그인에서 토큰을 갱신할 때 요청 바디 - RequestKakaoTokenDto : 카카오 로그인에서 토큰을 발급할 때 요청 바디 - OAuthTokenDto : 추후 구글, 네이버 로그인이 추가되었을 때 사용 예정 - 플랫폼 별로 static 메서드 구현하여 dto 생성 계획 - ProfileDto : 기존 서비스에서 조회하여 사용하는 항목
Configuration menu - View commit details
-
Copy full SHA for c8c8de9 - Browse repository at this point
Copy the full SHA c8c8de9View commit details -
refactor: providerId 추가 및 이메일 unique 규칙 제거
- 카카오 계정의 경우, 카카오 메일이 아닌 이메일을 사용할 수 있음 - 카카오 계정의 메일이 네이버 계정의 메일과 겹칠 수 있기 때문에 유일하지 않음 - 대신 providerId를 추가하여 사용자 정보를 제공하는 리소스 서버 코드를 추가함 ex. { email: [email protected], providerId: 0 } { email: [email protected], providerId: 1 } -> 이메일은 같지만 providerId가 다르므로 서로 다른 회원임
Configuration menu - View commit details
-
Copy full SHA for ec03e92 - Browse repository at this point
Copy the full SHA ec03e92View commit details -
- 사용자 정보를 갱신할 때 필요한 dto - 로그인할 때 조회한 프로필 정보와 DB의 프로필 정보가 다르다면 갱신 필요 (+ 리프레시 토큰)
Configuration menu - View commit details
-
Copy full SHA for bddfc1f - Browse repository at this point
Copy the full SHA bddfc1fView commit details -
Configuration menu - View commit details
-
Copy full SHA for ec92415 - Browse repository at this point
Copy the full SHA ec92415View commit details -
- 이메일 기준으로 조회하되, 이메일 중복이 있을 수 있으므로 providerId까지 함께 검색하도록 수정 - refreshToken만 갱신하지말고 바뀐 사용자 프로필도 갱신하도록 수정
Configuration menu - View commit details
-
Copy full SHA for 41dd95e - Browse repository at this point
Copy the full SHA 41dd95eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 76af80d - Browse repository at this point
Copy the full SHA 76af80dView commit details -
Configuration menu - View commit details
-
Copy full SHA for acbb235 - Browse repository at this point
Copy the full SHA acbb235View commit details -
- 카카오 로그인 중 발생할 수 있는 에러 메시지 정의 - 구글, 네이버 등 플랫폼 구분하는 상수 정의
Configuration menu - View commit details
-
Copy full SHA for 8448604 - Browse repository at this point
Copy the full SHA 8448604View commit details -
AuthService에서 JwtService를 사용할 수 있도록 환경변수 세팅 및 JwtModule 추가
Configuration menu - View commit details
-
Copy full SHA for 028ee9c - Browse repository at this point
Copy the full SHA 028ee9cView commit details -
- loginKakao : /oauth/login/kakao 요청이 들어왔을 때 실행되는 로직으로, 인가코드를 바탕으로 토큰을 조회하고, 사용자 프로필을 조회함 - 이미 가입된 회원이라면 login을 호출하여 사용자 정보 갱신 - 신규 회원이라면 signup을 호출하여 사용자 정보 추가 - logout : /oauth/logout이 들어왔을 때 실행되는 로직으로 토큰의 값을 기준으로 서비스별 로그아웃 수행 - 현재 verifyToken에 try~catch문 없음 (추후 가드에서 verifyToken을 수행하도록 변경할 예정이므로 수정하지 않음) - REST API 호출 시에 발생할 수 있는 에러 처리 추가
Configuration menu - View commit details
-
Copy full SHA for 29c0c77 - Browse repository at this point
Copy the full SHA 29c0c77View commit details -
- jwt를 쿠키에 부착하도록 구현 - httpOnly로 XSS 공격 방지 - prod 환경에서 secure를 사용하여 암호화된 통신 이용하도록 설정 - sameSite 설정 CSRF 공격 예방 - logout 추가
Configuration menu - View commit details
-
Copy full SHA for 479dbf7 - Browse repository at this point
Copy the full SHA 479dbf7View commit details -
- 현재 카카오 oauth 관련 로직만 있는데도 250줄임 - OAuth를 제공하는 플랫폼별 서비스를 작성하고, 공통 부분인 AuthService를 상속하여 사용할 예정
Configuration menu - View commit details
-
Copy full SHA for 8f8481b - Browse repository at this point
Copy the full SHA 8f8481bView commit details -
refactor: KakaoAuthService로 분리
- 카카오 OAuth 관련 로직만 작성 - 공통으로 사용하는 함수나 변수는 AuthService를 상속받아 사용
Configuration menu - View commit details
-
Copy full SHA for 0a8f2cd - Browse repository at this point
Copy the full SHA 0a8f2cdView commit details
Commits on Jan 11, 2024
-
Configuration menu - View commit details
-
Copy full SHA for b39a9e2 - Browse repository at this point
Copy the full SHA b39a9e2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6711e21 - Browse repository at this point
Copy the full SHA 6711e21View commit details -
- makeSlackMessage : 슬랙 메시지 생성 - 해당 함수를 에러 인터셉터에서 호출하여 사용
Configuration menu - View commit details
-
Copy full SHA for 0881a0d - Browse repository at this point
Copy the full SHA 0881a0dView commit details -
refactor: 로그 출력 형식 관련 함수 별도의 파일로 분리
- makeErrorLogMessage : 에러 로그 출력 형식 지정 - logErrorWithStack : 조금 더 자세한 에러 로그가 필요한 경우 stack도 함께 출력하도록 구현 - 해당 함수를 에러 인터셉터에서 호출하여 사용
Configuration menu - View commit details
-
Copy full SHA for 4f268c4 - Browse repository at this point
Copy the full SHA 4f268c4View commit details -
refactor: util 함수 호출하여 사용하도록 리팩토링
- 슬랙 웹훅, 로깅 유틸을 호출함으로써 인터셉터의 내부 로직이 간결해짐 - JwtError에 대한 처리 추가 - 서버 쪽에 남겨지는 로그는 자세하게 작성 - 클라이언트 쪽에 전달되는 에러 메시지는 서버 쪽 에러를 유추할 수 없게 'jwt 검증에 실패했다'는 내용 전달
Configuration menu - View commit details
-
Copy full SHA for b9c9cc7 - Browse repository at this point
Copy the full SHA b9c9cc7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5f6ed44 - Browse repository at this point
Copy the full SHA 5f6ed44View commit details -
feat: JWT_ERR 작성 및 자세한 에러 메시지 삭제
- JwtService.verify 중에 발생할 수 있는 에러를 처리하기 위해 JWT_ERR 작성 - 클라이언트 측에 자세한 에러 메시지가 전달되면 보안에 취약해지므로 서버쪽에서 발생하는 에러 메시지 삭제
Configuration menu - View commit details
-
Copy full SHA for 9b6736b - Browse repository at this point
Copy the full SHA 9b6736bView commit details -
- 로그인에 성공하면 magicconch라는 쿠키를 부착함 - 해당 쿠키를 검증하여 인증 여부 확인
Configuration menu - View commit details
-
Copy full SHA for f1ccca9 - Browse repository at this point
Copy the full SHA f1ccca9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0a5aff1 - Browse repository at this point
Copy the full SHA 0a5aff1View commit details -
- 로그인에 성공한 경우, magicconch라는 쿠키 부착하도록 설정 - 로그아웃 시 가장 먼저 AuthGuard를 통해 인증 여부 확인 - req에 붙은 user 값을 바탕으로 어느 OAuth를 로그아웃 해야하는지 판단 - OAuth 로그아웃에 성공하면 서비스 로그아웃 처리
Configuration menu - View commit details
-
Copy full SHA for 39b7292 - Browse repository at this point
Copy the full SHA 39b7292View commit details -
Configuration menu - View commit details
-
Copy full SHA for c6d9202 - Browse repository at this point
Copy the full SHA c6d9202View commit details -
Configuration menu - View commit details
-
Copy full SHA for 11ddb63 - Browse repository at this point
Copy the full SHA 11ddb63View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b9fb2a - Browse repository at this point
Copy the full SHA 5b9fb2aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 46bd048 - Browse repository at this point
Copy the full SHA 46bd048View commit details -
Configuration menu - View commit details
-
Copy full SHA for 94c3789 - Browse repository at this point
Copy the full SHA 94c3789View commit details -
redis에 refresh token을 저장하기 때문에 더 이상 데이터베이스의 refresh token을 저장할 필요가 없음
Configuration menu - View commit details
-
Copy full SHA for ed5ab7c - Browse repository at this point
Copy the full SHA ed5ab7cView commit details -
Configuration menu - View commit details
-
Copy full SHA for ad9d404 - Browse repository at this point
Copy the full SHA ad9d404View commit details -
Configuration menu - View commit details
-
Copy full SHA for cc2e81e - Browse repository at this point
Copy the full SHA cc2e81eView commit details -
refactor: cache 추가 및 그에 따른 로그아웃 로직 수정
- 로그아웃 요청 시, access token이 만료되는 경우가 발생할 수 있음 - 데이터베이스에서 refresh token을 조회하는 대신, 캐시에서 조회하도록 변경
Configuration menu - View commit details
-
Copy full SHA for cb857bb - Browse repository at this point
Copy the full SHA cb857bbView commit details -
Configuration menu - View commit details
-
Copy full SHA for dba5782 - Browse repository at this point
Copy the full SHA dba5782View commit details -
refactor: JwtModule 여러 모듈에서 공통 사용하도록 설정
- AppModule에서 registerAsync()로 JwtModule 등록 - ChatModule이나 AuthModule에서는 registerAsync() 없이 JwtModule만 import 하여 사용
Configuration menu - View commit details
-
Copy full SHA for e1f157f - Browse repository at this point
Copy the full SHA e1f157fView commit details -
refactor: cache 추가 및 그에 따른 인증 로직 수정
email과 providerId를 key로 하여 refresh token 저장
Configuration menu - View commit details
-
Copy full SHA for 11b2738 - Browse repository at this point
Copy the full SHA 11b2738View commit details -
Configuration menu - View commit details
-
Copy full SHA for 11d983f - Browse repository at this point
Copy the full SHA 11d983fView commit details
Commits on Jan 12, 2024
-
fix: sameSite 설정값 변경 (strict -> lax)
- sameSite 옵션은 쿠키를 어떤 상황에서 전송해야 하는지 제어하는 옵션 - strict는 동일한 도메인에서만 쿠키 전송 가능 - lax는 외부 도메인의 GET 요청에 대해서만 쿠키 전송 가능 - 프론트엔드의 도메인과 백엔드의 도메인이 다르기 때문에 lax를 붙여줘야 함
Configuration menu - View commit details
-
Copy full SHA for eac11a0 - Browse repository at this point
Copy the full SHA eac11a0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 75dcb4b - Browse repository at this point
Copy the full SHA 75dcb4bView commit details -
application/x-www-form-urlencoded 요청을 보낼 때는 URLSearchParams 형태의 body를 보내줘야 함
Configuration menu - View commit details
-
Copy full SHA for f6a416a - Browse repository at this point
Copy the full SHA f6a416aView commit details -
- OIDC 사용자 정보 조회 API가 동작하지 않아서 사용자 조회 API로 변경함 - 이에 따라 응답 바디가 변경되어 사용자 API에 맞게 적절하게 수정함
Configuration menu - View commit details
-
Copy full SHA for 1ffae01 - Browse repository at this point
Copy the full SHA 1ffae01View commit details -
- 인가 코드를 파라미터에 저장하는 줄 알았으나 쿼리 파라미터였음 - param 대신 query를 이용하도록 수정함
Configuration menu - View commit details
-
Copy full SHA for e5e9912 - Browse repository at this point
Copy the full SHA e5e9912View commit details -
fix: @InjectRepository() 데코레이터 제거
서비스 앞에 붙은 @InjectRespository() 제거
Configuration menu - View commit details
-
Copy full SHA for 952cd04 - Browse repository at this point
Copy the full SHA 952cd04View commit details -
fix: 카카오 로그인 API 테스트 중 발견한 버그 수정
- application/x-www-form-urlencoded 사용 시, 문자열이 아니라 URLSearchParams 형태로 전송해야 함 -> JSON.stringify() 대신 URLSearchParams를 넣어주도록 변경 - OIDC 사용자 정보 조회가 동작하지 않아 사용자 정보 조회를 이용하도록 변경 - 헤더 설정 중에 발견한 오타 수정
Configuration menu - View commit details
-
Copy full SHA for da611bb - Browse repository at this point
Copy the full SHA da611bbView commit details -
- JwtModule을 동적으로 로드하도록 도와주는 모듈 - @global() 데코레이터를 이용하여 전역으로 사용할 수 있도록 설정
Configuration menu - View commit details
-
Copy full SHA for 7cd573d - Browse repository at this point
Copy the full SHA 7cd573dView commit details -
- 수정 전에는 @global() 데코레이터를 사용하지 않아 전역으로 사용되지 않았음 - 최상위 모듈에 JwtConfigModule을 가져오도록 수정하면 다른 모듈에서는 JwtConfigModule을 가져오지 않아도 에러가 발생하지 않음
Configuration menu - View commit details
-
Copy full SHA for f5f6419 - Browse repository at this point
Copy the full SHA f5f6419View commit details