패스키 (Passkeys, WebAuthn)
패스키 (Passkey)는 기존 비밀번호보다 더 안전하고 사용자 친화적인 대안을 제공합니다. 공개키 암호화를 사용하여, 패스키는 사용자의 디바이스, 서비스 도메인, 그리고 사용자 ID를 연결함으로써 피싱 및 비밀번호 공격을 효과적으로 방지합니다. 다양한 디바이스나 브라우저와 호환되며, 사용자는 생체 인식 및 하드웨어 보안 기능을 활용하여 편리하게 인증 (Authentication)할 수 있습니다. WebAuthn은 웹사이트가 패스키를 구현할 수 있도록 API를 제공합니다.
Logto는 다단계 인증 (MFA) 및 패스키 로그인 모두에 대해 패스키 (WebAuthn)를 지원합니다. 동일한 WebAuthn 자격 증명은 테넌트 구성에 따라 두 곳 모두에서 재사용할 수 있습니다.
개념 (Concepts)
고객들은 일반적으로 WebAuthn보다는 패스키 (Passkeys)를 더 잘 알고 있습니다. 그렇다면 이 둘의 관계는 무엇이며, 어떻게 사용해야 할까요? 다음 개념들을 살펴보세요:
- 패스키 (Passkeys): 패스키는 비밀번호를 대체하는 FIDO 기반의 피싱 저항 자격 증명입니다. 비대칭 공개키 암호화를 활용하여 보안을 강화합니다. USB 또는 Bluetooth 장치와 같은 하드웨어 토큰이나 보안 키가 될 수 있습니다. "패스키"는 사용자에게 표시되는 인증 (Authentication) 방식이므로, 제품 클라이언트 내에서 사용해야 합니다.
- WebAuthn: W3C와 FIDO Alliance가 개발한 자바스크립트 API로, 웹 애플리케이션 인증 (Authentication)에 FIDO2 표준을 적용할 수 있게 해줍니다. 패스키는 WebAuthn이 지원하는 인증 (Authentication) 방식 중 하나입니다. Logto 콘솔에서는 이 통합을 전문적으로 "WebAuthn"이라고 부릅니다.
WebAuthn은 사용자가 선택할 수 있는 다양한 인증기(Authenticator)를 제공합니다. 이는 로컬 및 클라우드 사용을 위해 두 가지 유형으로 제공됩니다:
- 플랫폼 인증기 (Platform authenticator, 내부 인증기): 단일 및 특정 디바이스 OS(예: 컴퓨터, 노트북, 휴대폰, 태블릿)에 연결되어 있습니다. 사용자가 로그인하는 디바이스에서만 동작하며, 생체 인식 또는 디바이스 암호와 같은 방법으로 인가 (Authorization)를 수행합니다. 빠른 인증 (Authentication) 방법입니다. 예: macOS 또는 iOS에서 Touch ID, Face ID, 또는 디바이스 암호로 검증되는 iCloud Keychain; Windows Hello에서 얼굴 인식, 지문, 또는 PIN으로 검증.
- 로밍 인증기 (Roaming authenticator, 외부 인증기, 크로스 플랫폼 인증기): 별도의 휴대용 디바이스 또는 소프트웨어 애플리케이션(예: 하드웨어 보안 키, 스마트폰)입니다. USB 연결 또는 NFC, Bluetooth를 활성화하여 디바이스와 연결해야 합니다. 로밍 인증기는 단일 디바이스나 브라우저에 국한되지 않아 더 큰 유연성을 제공합니다.
WebAuthn의 원리와 프로세스에 대해 더 깊이 알고 싶다면, 우리의 블로그 글 WebAuthn과 패스키 101 및 WebAuthn 통합 전 알아야 할 것들을 참고하세요.
MFA를 위한 패스키 인증 (Authentication) 구성하기
- 콘솔 > 다단계 인증 (MFA)로 이동하세요.
- "패스키 (WebAuthn)" 요소를 활성화하세요. 단일 인증 (Authentication) 요소 의존도를 줄이기 위해 패스키를 다른 MFA 요소(TOTP, SMS, 백업 코드)와 함께 사용하는 것을 권장합니다.
- 원하는 MFA 정책(필수 vs. 선택)을 구성하세요.
- 구성 변경 사항을 저장하세요.
동일한 사용자가 패스키 로그인으로 로그인하면, Logto는 별도의 MFA 인증 (Authentication) 단계를 건너뜁니다. 패스키 로그인 자체가 이미 WebAuthn 기반 인증 (Authentication) 요구 사항을 충족하기 때문입니다.
WebAuthn을 구현할 때 몇 가지 제한 사항을 인지하는 것이 중요합니다:
- 플랫폼 및 브라우저 제한: Logto는 현재 네이티브 애플리케이션에 대해 WebAuthn 지원을 제공하지 않습니다. 또한, WebAuthn 인증기 사용 가능 여부는 브라우저 및 디바이스 기능에 따라 다릅니다 (목록 확인하기). 따라서 WebAuthn은 항상 다단계 인증 (MFA)을 구현하는 유일한 옵션이 아니며, 그렇지 않으면 특정 브라우저와 디바이스만 제품에 접근하도록 제어할 수 있습니다.
- 도메인 제한: 도메인이 변경되면 기존 WebAuthn 계정을 통한 사용자 인증 (Authentication)이 어려워질 수 있습니다. 패스키는 현재 웹 페이지의 특정 도메인에 바인딩되며, 서로 다른 도메인 간에는 사용할 수 없습니다.
- 디바이스 제한: 디바이스를 분실하면, 특히 "이 디바이스" 플랫폼 인증기에 의존하는 경우 계정 접근이 불가능해질 수 있습니다. 인증 (Authentication) 접근성을 높이기 위해, 사용자에게 둘 이상의 인증 (Authentication) 요소를 제공하는 것이 좋습니다.
패스키 관리 구성하기
Account API를 사용하여 사용자가 자신의 패스키를 추가, 조회, 이름 변경, 삭제할 수 있는 맞춤형 계정 관리 인터페이스를 구축할 수 있습니다. 이는 개인화된 계정 센터를 만들거나, 크로스 디바이스 백업 시나리오를 가능하게 하는 데 유용합니다.
구체적인 구현 단계와 API 엔드포인트는 Account API로 계정 설정을 참고하세요.
패스키 설정 흐름
패스키 사양에 따르면, 사용자는 인증 (Authentication) 컴포넌트를 시작하기 위해 현재 페이지에서 버튼을 직접 클릭해야 합니다. 즉, 설정 및 인증 (Authentication) 흐름 모두에서 사용자는 WebAuthn을 시작하기 위해 랜딩 페이지로 리디렉션되어야 합니다.
패스키 인증 (Authentication) 흐름
사용자가 패스키를 포함한 여러 MFA 방식을 설정한 경우, 패스키는 보안성과 편의성 때문에 첫 화면에서 추천 MFA 인증 (Authentication) 방식으로 표시됩니다. 사용자는 아래의 "다른 방법으로 인증 (Authentication) 시도"를 클릭하여 다른 인증 (Authentication) 방식으로 전환할 수 있습니다. 자세한 내용은 MFA 구성하기를 참고하세요.
사용자가 패스키 로그인으로 로그인하여 첫 번째 인증 (Authentication) 요소를 입력하는 대신 로그인을 완료하면, Logto는 추가 MFA 단계를 요구하지 않습니다. 이는 패스키 자체가 WebAuthn MFA 요소로 간주되기 때문입니다.