외부 인증 공급자마다 다른 인증 결과를 하나의 공통 사용자 계약으로 정규화합니다.
소셜 로그인은 서비스가 사용자의 비밀번호를 받지 않고, 외부 인증 주체가 확인한 결과를 넘겨받는 방식입니다. 브라우저에 노출되는 일회용 인가 코드와 서버끼리 주고받는 토큰 교환을 분리하고, 공급자마다 다른 claim을 바뀌지 않는 공통 principal로 변환합니다.
잠깐 쓰고 버리는 일회용 코드를 보안 채널에서 토큰으로 바꿔, 자격 증명이 노출되는 범위를 줄입니다.
요청과 응답을 하나로 묶어 위조된 callback과 이전 인증 응답의 재사용을 막습니다.
issuer와 subject로 사용자를 식별하고, 이메일·이름·검증 상태를 공통 계약으로 변환합니다.
아래 증명은 글로 된 설명이 아닙니다. 버튼을 누르면 이 서버가 지금 직접 계산합니다.
규격이 정해 둔 verifier와 code_challenge 쌍을 그대로 재현합니다.
표준 문서에 실린 테스트 벡터를 그대로 넣어 같은 값이 나오는지 확인합니다.
형식이 깨진 verifier는 challenge를 유도하는 단계에서 예외로 끊깁니다. PKCE 없는 토큰 교환으로 조용히 돌아가지 않습니다.
막아야 할 입력을 실제로 넣고 거부되는지 확인합니다.
규격 원문을 먼저 실었습니다. 사례는 이 분야에서 실제로 보안이 뚫린 일을 다룬 자료입니다.
인가 코드 흐름의 원문입니다. client·AS·RS의 역할 구분이 여기서 정의됩니다.
공개 클라이언트에서 인가 코드를 가로채는 공격을 막는 확장입니다. 부록 B에 고정 벡터가 있습니다.
implicit 흐름 폐기처럼, 지금 무엇을 쓰지 말아야 하는지 판단하는 기준입니다.
ID Token 검증 절차와 nonce 결속 규칙을 정의합니다.
다음 단계
두 번째 소비 프로젝트에 연결해 서비스 계정 계층과의 어댑터 계약을 검증합니다.