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
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