Studyyyyy
PKCE (OAuth) 본문
PKCE (Proof Key for Code Exchange) 동작 원리
OAuth2 Authorization Code Flow를 모바일/SPA같은 비밀키를 안전하게 숨기기 어려운 환경에서 보안 강화를 위해 만든 방식
1. 클라이언트에서 code_verifier 생성
- 클라이언트 앱에서 랜덤 문자열(ex. xYz123...) 생성
- 외부에 노출되면 안되기 때문에 일반적으로 HttpOnly 쿠키에 저장
2. code_challenge 생성
- code_verifier를 SHA256 해시 후 URL-safe Base64로 인코딩 -> code_challenge
- 이걸 OAuth 서버로 보냄(공개해도 되는 값)
3. 사용자가 로그인하면 Authorization Code 발급
- OAuth 서버는 code_challenge 값을 기억
- 로그인 후 클라이언트 서버의 redirect_uri(ex. /api/auth/callback)으로 code를 넘겨줌
4. Authorization Code + code_verifier로 토큰 교환
- 클라이언트 서버는 code랑 원래의 code_verifier를 가지고 OAuth 서버에 토큰 요청
- OAuth 서버는 미리 저장해둔 2( code_challenge)랑 클라이언트에서 보낸 code_verifier를 해시한 값이 일치하는지 확인
- 맞으면 access_token, refresh_token 발급
- PKCE = code_verifier (랜덤값) + code_challenge (그 랜덤값을 해시한 공개용 값)
- 로그인 요청 시에는 해시값만 보내고, 토큰 교환 시에는 원본값을 제출하여 서로 맞는지 검증하는 보안 절차
'study' 카테고리의 다른 글
| 포트포워딩 (Port Forwading) (0) | 2025.09.15 |
|---|---|
| V8 (0) | 2025.07.23 |
| 브라우저 작동 방식 (0) | 2025.07.23 |
| 운영체제 (0) | 2025.07.23 |
| NAT (Network Address Translation) (0) | 2025.07.15 |