피드로 돌아가기
Dev.toFrontend
원문 읽기
Expo exchangeCodeAsync 내 PKCE code_verifier 누락 문제 해결
The PKCE "Gotcha" in Expo’s exchangeCodeAsync
AI 요약
Context
React Native 환경에서 expo-auth-session을 통한 Okta PKCE 인증 구현 과정 발생한 문제. 공식 SDK의 TokenRequestConfig 타입 내 codeVerifier 필드 부재로 인한 토큰 교환 요청 거절 현상 분석.
Technical Solution
- PKCE 인증의 핵심인 code_challenge와 code_verifier 간의 매칭 검증 단계에서 발생하는 API 오류 식별
- 공식 타입 정의에서 제외된 codeVerifier 속성을 top-level로 전달 시 SDK가 이를 무시하는 구조적 한계 파악
- POST body에 임의의 파라미터를 포함할 수 있는 extraParams 객체를 통한 우회 경로 활용
- extraParams 내에 snake_case 형태의 code_verifier 키를 명시하여 인증 서버의 검증 요구사항 충족
- 타입 정의의 제약을 극복하고 런타임에 필요한 필수 인증 파라미터를 강제로 주입하는 전술적 해결책 적용
실천 포인트
- SDK 공식 타입 정의와 실제 서버 API 요구 사양 간의 괴리 여부 확인 - 인증 관련 라이브러리 사용 시 PKCE flow의 code_verifier 전달 위치 검증 - 타입 시스템에서 누락된 필드 발생 시 extraParams나 generic options를 통한 주입 가능성 검토