본문 바로가기

Fido2/WebAuthn

라라벨 프로젝트에 WebAuthn 도입하기 (4) 등록 Flow 3 (Registration Flow) Parsing and Validation check, Store

오늘은 이전의 메소드들을 통해 만든 데이터들을 어떻게 처리하는지 알아보려고 합니다. 먼저 아래 플로우를 봐주세요.

 

 

 

webuahtn.guide 문서와 위의 플로우를 함께 보시면서 데이터를 만들어가시면 더욱 좋을 것 같습니다. FLOW는 대략적으로 위와 같고 마지막에 authData는 디테일하게 적지 않았는데 Spec문서에 좋은 이미지가 있어서 첨부합니다. ( Figure중 하나의 이미지입니다 )

 

이제 간단하게 설명해보겠습니다. navigator.credential.create()함수를 통해 얻은 값들 중 clientDataJson과 attestationObject는 각각 다음과 같은 데이터를 제공합니다.

 

clientDataJson

- challenge ( 처음 publicKeyCredentialCreationOption을 생성할때 전송한 challenge값과 같은지 체크합니다 )

- origin ( 현재 서버의 origin과 같은지 확인합니다 )

- type

attestationObject.authData

- RP ID Hash

- FLAGS

- COUNTER

- AAGUID

- credentialIdLength

- credential ID

- credential public key

- EXTENSIONS

 

attestationObject의 데이터들은 이후 인증에서 필요하기 때문에 데이터베이스에 저장합니다. 또한 디코딩, 파싱 코드는 여기에서는 다음과 같이 했습니다.

DB에 저장하는 스키마는 GITHUB에 있으니 참고해주시길 바랍니다. 다음은 인증 FLOW를 함께 따라가보겠습니다 ㅎㅎ