사용 방법
- 생성 버튼으로 새 code_verifier 를 만들거나 직접 붙여 넣습니다.
- code_challenge 는 BASE64URL(SHA-256(code_verifier)) 로 계산됩니다.
- 인가 요청에 code_challenge 와 code_challenge_method=S256 을 보냅니다.
- 토큰 요청에 code_verifier 를 보냅니다.
PKCE(Proof Key for Code Exchange, RFC 7636)는 OAuth 2.0 인가 코드 흐름을 보호하는 방식으로, 시크릿을 숨길 수 없는 모바일 앱·SPA 를 위해 만들어졌습니다. 클라이언트는 일회용 비밀값 code_verifier 를 만들고 그 해시인 code_challenge 만 인가 요청에 보냅니다. 토큰을 받을 때 원래 verifier 를 보내면 서버가 둘을 대조하므로, 코드만 가로채서는 토큰을 받을 수 없습니다.
이 생성기는 crypto.getRandomValues 로 32바이트 난수를 뽑아 패딩 없는 base64url 로 인코딩하므로 verifier 는 43자입니다. code_challenge 는 그 SHA-256 을 같은 방식으로 인코딩해 항상 43자입니다. RFC 7636 에는 plain 도 있지만 SHA-256 을 계산할 수 있으면 S256 을 쓰도록 정해 두어 S256 만 제공합니다. 로그인 연동 디버깅에 쓰세요.
붙여 넣은 verifier 는 형식 검사 없이 해시하니, A-Z, a-z, 0-9, -, ., _, ~ 로 된 43~128자인지 확인하세요. verifier 는 요청마다 새로 만듭니다. 두 값 모두 브라우저의 Web Crypto API 로 계산하며 전송하지 않습니다.