개요
동기화된 패스키를 사용할 때는 패스키 제공업체를 통해 인증합니다.
패스키를 만들고 인증하려면 웹의 경우 WebAuthn API, Android 앱의 경우 Credential Manager API를 사용합니다. 이러한 API는 클라이언트와 패스키 제공업체 간의 통신을 처리합니다.
이러한 API는 웹페이지 또는 Android 앱과 같은 클라이언트에서 호출되지만 인증 사용 사례를 완료하려면 나머지 기능을 서버에 구현해야 합니다.
패스키 구현은 다음 두 가지 기능으로 구성됩니다.
- 패스키 등록. 사용자가 패스키를 만들 수 있도록 WebAuthn API 또는 Credential Manager API를 사용합니다. 연결된 공개 키를 서버에 저장합니다.
- 패스키로 인증 서버에서 인증 질문을 가져오고 WebAuthn API 또는 Credential Manager API를 사용하여 사용자가 패스키로 이 질문에 서명할 수 있도록 합니다. 서버에서 서명을 확인합니다. 서명이 유효하면 사용자를 인증합니다.
서버 측 라이브러리
서버 측 패스키 기능을 처음부터 구현할 수도 있지만 대신 라이브러리를 사용하는 것이 좋습니다.
패스키 생성 및 인증을 지원하는 서버를 FIDO2 서버 또는 줄여서 FIDO 서버라고 합니다. 더 나아가 여기서는 패스키 지원을 구현하는 서버 측 라이브러리를 FIDO 서버 측 라이브러리라고 합니다.
라이브러리를 사용하는 이유
FIDO 서버 측 라이브러리를 사용하면 다음과 같은 몇 가지 이점이 있습니다.
- 시간 및 개발자 환경. WebAuthn 사양은 복잡합니다. FIDO 서버 측 라이브러리는 패스키 구현을 위한 간단한 API를 제공하므로 시간과 개발 리소스를 절약할 수 있습니다.
- 유지 관리성: WebAuthn 사양은 계속 변경될 수 있습니다. 활발하게 유지관리되는 최신 버전의 라이브러리를 사용하면 구현을 최신 상태로 유지하는 데 도움이 됩니다.
- 보안 및 규정 준수. WebAuthn 사양 및 보안 요구사항을 준수하도록 패스키를 구현하려고 합니다. FIDO 서버 측 라이브러리를 사용하면 구현을 안전하게 유지하고 사양을 준수하도록 할 수 있습니다. 제품 및 업계에 따라 인증에 특정 보안 표준을 사용하도록 요구하는 규정이 구현될 수도 있습니다.
가능하다면 제품에 사용되는 오픈소스 프로젝트를 재정적으로 지원하는 것을 고려해 보세요.
라이브러리
- awesome-webauthn GitHub 저장소에는 커뮤니티에서 선별한 서버 측 라이브러리 목록이 있습니다. JavaScript, TypeScript, Go, Python 등을 위한 라이브러리가 있습니다.
- 라이브러리 컬렉션은 passkeys.dev에서 사용할 수 있으며, W3C WebAuthn 채택 커뮤니티 그룹에서 관리합니다.
- FIDO Alliance는 FIDO2 서버 모음을 참조합니다.