Skip to content

[Refactor]: Feat: OAuth 보안 강화를 위한 PKCE 적용 및 state 검증 제거 #91

Description

@juwoojae

Issue 요약

OAuth Authorization Code 탈취 위험과 CSRF 공격 위험을 줄이기 위해 PKCE 방식을 적용하고, 기존 state 검증 코드를 제거합니다.

Issue 상세

현재 OAuth 로그인 흐름에서는 Authorization Code를 이용해 토큰을 발급받는 구조를 사용하고 있습니다.

하지만 mobile/native app 환경에서는 Authorization Code가 redirect 과정에서 탈취될 위험이 있으며, client secret을 안전하게 보관하기 어렵기 때문에 추가적인 보안 장치가 필요합니다.

RFC 8252에서는 native app의 OAuth 2.0 인증 요청은 외부 user-agent, 즉 브라우저를 통해 수행하는 것을 권장하고 있으며, Authorization Code 탈취 공격을 완화하기 위해 PKCE 적용이 필요합니다.

참고 문서:

이번 이슈에서는 OAuth 로그인 요청 시 code_verifier와 code_challenge를 생성하고, callback 이후 token exchange 과정에서 code_verifier를 함께 전달하도록 수정합니다.

또한 PKCE를 통해 요청 주체 검증을 강화하므로, 기존에 사용하던 state 기반 검증 코드는 제거합니다.

To do

  • OAuth 로그인 요청 시 code_verifier 생성
  • code_verifier를 기반으로 code_challenge 생성
  • authorization request에 code_challenge, code_challenge_method=S256 추가
  • token exchange 요청 시 code_verifier 전달
  • 기존 state 생성 및 검증 코드 제거
  • Authorization Code 탈취 상황에서 code_verifier 없이는 토큰 발급이 불가능한 구조인지 확인
  • OAuth 로그인 정상 동작 테스트

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Feat새로운 기능을 추가할 때 사용합니다.Refactor코드 구조 개선 및 성능 최적화를 위해 사용합니다.

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions