자격 증명을 검증하는 흐름을 비밀번호 저장 방식, 계정 정책과 분리합니다.
비밀번호 인증은 사용자가 제출한 비밀값을 저장된 검증값과 비교해 principal을 확인하는 흐름입니다. 사용자 저장소와 비밀번호 전용 해시, 실패 정책을 서로 떼어 두면 저장 기술이나 계정 정책이 달라도 같은 인증 계약을 그대로 씁니다.
사용자 조회와 검증 결과를 인터페이스 뒤로 분리해 특정 저장 방식에 묶이지 않게 합니다.
빠른 범용 해시 대신, 일부러 계산 비용을 크게 만든 비밀번호 전용 파생 함수로 검증값을 만듭니다.
계정이 있든 없든 같은 실패 응답과 처리 시간을 유지해, 어떤 사용자가 가입했는지 드러나지 않게 합니다.
아래 증명은 글로 된 설명이 아닙니다. 버튼을 누르면 이 서버가 지금 직접 계산합니다.
AUTH는 사용자 저장소를 소유하지 않습니다. 소비 서비스가 주입한 repository 포트로 계정을 조회하고, 이메일 정규화와 비밀번호 검증만 표준으로 맡습니다.
표준 문서에 실린 테스트 벡터를 그대로 넣어 같은 값이 나오는지 확인합니다.
없는 계정, 틀린 비밀번호, 잠긴 계정은 모두 같은 invalid로 끝납니다. 계정이 없을 때도 더미 해시를 실제로 검증해 응답 시간까지 맞춥니다. 그래서 응답 차이로 회원 목록을 긁어낼 수 없습니다.
막아야 할 입력을 실제로 넣고 거부되는지 확인합니다.
규격 원문을 먼저 실었습니다. 사례는 이 분야에서 실제로 보안이 뚫린 일을 다룬 자료입니다.
주기적 변경 강제와 복잡도 규칙이 왜 권장에서 빠졌는지 근거를 밝힙니다.
계정 열거를 막고 실패 응답을 통일하는 실무 지침입니다.
다음 단계
소비 시스템의 credential repository와 연결하고, 실제 트래픽에서 계정 열거 방지 지표를 검증합니다.