OAuth 개발과 디버깅

PKCE 생성기검증자를 만들고 챌린지를 확인하세요

기존 검증자의 S256을 계산하고 필요할 때만 예상 챌린지와 비교합니다.

PKCE 생성기

코드 검증자

ASCII 문자 A–Z, a–z, 0–9, -, ., _, ~를 43–128자 입력하세요. 공백과 줄바꿈을 제거하지 않습니다.

예상 코드 챌린지 (선택 사항)

완전히 비우면 비교하지 않습니다. 입력한다면 = 없이 정규 Base64URL 43자여야 합니다.

S256 결과

형식이 맞아도 직접 입력한 검증자가 무작위이거나 예측 불가능하다는 뜻은 아닙니다.

입력은 현재 페이지에서 처리하며 도구가 업로드하거나 저장하지 않습니다.

옵션

다음 수동 생성에만 적용합니다. 무작위 바이트를 패딩 없는 Base64URL로 바꿉니다. SHA-256 출력은 항상 256비트입니다.

검증자를 붙여 넣거나 생성할 값을 미리 확인하세요.

토큰 요청에서 검증자 오류가 나면 새 값을 만들기 전에 원래 값을 확인하세요. PKCE 생성기는 기존 코드 검증자를 받아 해당 코드 챌린지를 다시 계산합니다. PKCE 매개 변수 생성은 별도 버튼으로 실행하므로 진행 중인 요청의 값을 자동으로 바꾸지 않습니다.

검증자는 토큰 교환에, 챌린지는 인가 요청에 사용합니다. 서로 맞는다는 결과는 로컬 계산이 일치한다는 뜻입니다. 실제 로그인, 리디렉션 주소 또는 공급자 설정이 올바르다는 판정은 아닙니다.

PKCE 생성기로 오류 원인 좁히기

원래 요청을 재현하기

다른 검증자를 생성하면 이전 챌린지와 맞지 않는 것이 정상입니다. PKCE 생성기는 원래 문자열을 그대로 계산하므로 실제 요청에 보낸 값과 대조할 수 있습니다.

무작위 바이트가 검증자가 되고 해시 계산을 거쳐 일정한 길이의 챌린지가 됩니다.

형식 오류와 불일치 구분

공백이나 잘못된 마지막 문자는 입력 오류로 표시합니다. 문법에 맞지만 다른 챌린지는 불일치로 표시하여 인코딩 문제와 잘못된 쌍을 구분합니다.

동일한 검증자를 두 챌린지와 비교하여 일치와 불일치를 보여 줍니다.

한 번의 인가 요청을 기준으로 확인

01

원본 값 또는 새 생성 선택

처음에는 입력이 비어 있습니다. 기본 32바이트는 43자 검증자가 됩니다. 크기를 바꾸기만 하면 새 값을 만들지 않으며, 생성 버튼을 눌러야 미리보기가 나옵니다.

  • 진행 중인 교환에는 처음 사용한 검증자를 유지하세요.
02

실제로 보낸 챌린지 입력

예상 챌린지를 완전히 비우면 계산만 합니다. 자동 계산은 편집 후 350ms에 실행됩니다. 끄면 계산 버튼이나 Ctrl/Cmd+Enter로 실행합니다.

  • 공백만 입력해도 빈 입력으로 간주하지 않습니다.
03

교체와 결과 확인

생성, 예제, 비우기는 미리보기 후 적용합니다. 실행 취소는 이전 입력과 결과를 복원합니다. 현재 비교 상태를 확인한 뒤 개별 값이나 전체 JSON을 내보내세요.

  • 입력 변경 후 오래된 결과와 열린 미리보기는 내보낼 수 없습니다.

정확한 값으로 디버깅

암호학적 무작위 생성

32, 48, 64, 96바이트를 선택하면 43, 64, 86, 128자가 됩니다. 브라우저의 안전한 난수 기능을 사용하며 생성은 항상 직접 실행합니다.

S256 챌린지 계산

검증자의 ASCII 바이트를 SHA-256으로 해시한 뒤 32바이트 결과를 Base64URL로 인코딩합니다. 패딩 없는 챌린지는 43자입니다.

기존 쌍 비교

계산한 챌린지와 입력한 값을 정확히 비교합니다. 비교 안 함, 일치, 불일치를 각각 보고하며 입력이 바뀌면 결과를 갱신해야 합니다.

전체 보고서 내보내기

검증자와 챌린지를 따로 복사하거나 방식, 길이, 형식 판정, 예상 값, 비교 결과, 무작위 원본 정보를 JSON으로 복사하고 다운로드할 수 있습니다.

형식과 판정의 범위

정확한 ASCII만 허용
검증자는 RFC 7636 비예약 문자 43–128자로 제한합니다. 따옴표, 공백, 줄바꿈, Unicode, =를 자동 제거하거나 고치지 않습니다.
정규 Base64URL 검사
예상 S256 값은 정확히 43자여야 하며 마지막 두 패딩 비트는 0이어야 합니다. 같은 바이트로 해석되더라도 비정규 표기는 거부합니다.
S256 전용
plain 방식이나 해시 역산을 지원하지 않습니다. 인가 서버에 접속하거나 로그인과 토큰 교환을 수행하지 않습니다.
엔트로피는 생성 방법에 따라 결정
생성 원본은 256, 384, 512, 768비트입니다. 이는 보안 강도가 아니며 SHA-256 출력은 256비트입니다. 직접 입력한 문자열의 예측 가능성은 형식 검사로 알 수 없습니다.
공개 예제와 실제 요청 구분
RFC 예제는 계산을 확인하는 공개 값입니다. 새로운 인가 시도에는 새 무작위 검증자를 사용하세요. 일치 결과만으로 공급자 설정을 검증할 수는 없습니다.

PKCE 생성기 질문과 답변

code_verifier가 잘못되었다는 오류는 왜 발생하나요?

43–128자 길이와 허용된 ASCII 문자를 확인하세요. 일반 Base64의 +, /, =나 공백이 섞이면 안 됩니다. PKCE 생성기는 오류 위치를 표시하며 원문을 자동 수정하지 않습니다.

변환한 검증자가 챌린지와 맞지 않으면 무엇을 확인하나요?

같은 인가 요청의 원본 검증자인지 확인하세요. 검증자 자체를 해시하고 바이너리 결과를 인코딩해야 합니다. 다른 요청의 값, 줄바꿈, 16진수 해시의 재인코딩은 다른 챌린지를 만듭니다.

PowerShell에서는 PKCE 값을 어떻게 인코딩해야 하나요?

동일한 규칙을 적용합니다. 검증자의 ASCII 바이트를 SHA-256으로 처리하고 그 바이너리 결과를 Base64URL로 인코딩하며 = 패딩을 제거합니다. 이 도구로 결과를 비교할 수 있지만 PowerShell 코드를 실행하지는 않습니다.

S256과 plain 중 어느 것을 써야 하나요?

SHA-256을 계산할 수 있다면 S256을 사용하세요. plain은 검증자를 그대로 챌린지로 보냅니다. 이 페이지는 S256만 계산하며 plain으로 바꾸지 않습니다.

챌린지를 한 번 생성해 저장한 뒤 계속 써도 되나요?

새 인가 시도마다 새로운 무작위 검증자와 챌린지를 만드세요. 같은 교환이 진행되는 동안에는 원본 검증자를 유지해야 하며, 중간에 바꾸면 비교가 실패합니다.

계산 또는 검증 오류를 발견했나요?

원래 요청의 값을 확인하세요

PKCE 생성기에 원본 검증자를 넣고 비교 결과를 확인한 다음 현재 JSON 보고서를 내보내세요.