WEBBOOK CHAPTER

Spring Security 6, 인증에서 운영까지: 25장. 패스키를 비밀번호 대체와 step-up에 사용한다

25장. 패스키를 비밀번호 대체와 step-up에 사용한다

Spring Security 6.5는 WebAuthn 기반 패스키 등록과 인증을 지원한다. 패스키 공식 문서webAuthn DSL, /webauthn/register, JDBC credential repository를 설명한다. 패스키는 phishing 저항성이 높지만 복구와 기기 전환 UX까지 설계해야 제품 기능이 된다.


http.formLogin(withDefaults())
    .webAuthn(webAuthn -> webAuthn
      .rpId("contracthub.example")
      .allowedOrigins("https://contracthub.example"));

RP ID와 origin은 배포 도메인 계약이다. 임의 preview domain, HTTP 운영, 프록시 host 오류가 등록·로그인을 깨뜨린다. 등록 options와 인증 options 요청은 challenge 상태를 바꾸므로 공식 예처럼 POST와 CSRF 보호를 사용한다.

ContractHub에서는 1천만원 이상 승인에 최근 패스키 인증을 요구한다. 단순히 “패스키가 계정에 등록됨”이 아니라 현재 세션에서 일정 시간 안에 user verification을 거쳤다는 증거를 정책 입력으로 쓴다. 복구 상담으로 이 강도를 우회할 수 없게 한다.