패스키는 비밀번호를 대체하는 더 간편하고 빠르며 안전한 로그인 방법을 제공하여 로그인 환경을 혁신하도록 설계되었습니다. 이 체크리스트에서는 최적의 사용자 환경 (UX) 결과를 얻기 위해 패스키를 구현하는 데 필요한 주요 사항을 안내합니다.
이 체크리스트 사용 방법
이 체크리스트는 인증 흐름에서 패스키를 구현하는 개발자 및 제품팀을 대상으로 합니다. 다음과 같은 용도로 사용할 수 있습니다.
- 구현이 다음 도움말에 설명된 최신 패스키 UX 권장사항을 준수하는지 확인합니다.
- 사용성, 보안, 호환성을 개선하는 필수 및 선택적 요소를 식별합니다.
- 개발 중과 배포 전에 구현을 확인합니다.
- 사용자 채택 및 시스템 상호 운용성을 지원하는 권장사항을 따르세요.
이를 통해 최종 사용자에게 원활하고 안전한 환경을 제공할 수 있습니다.
패스키 등록
웹사이트에서 비밀번호에서 패스키로 원활하게 전환하려면 정교한 패스키 등록 기능이 필요합니다. 비밀번호가 없는 로그인을 위한 패스키 생성에 설명된 안내에 따라 웹사이트에 패스키 등록 기능을 빌드합니다. 다음은 기본 패스키 등록 기능 외에도 확인해야 하는 사항입니다.
✅ 승격된 패스키 생성을 위해 navigator.credentials.create()
에 전달할 인증자 첨부파일 값으로 "platform"
를 지정합니다.
- 패스키를 반응적으로 생성하는 사용자에게 최적화되고 원활한 패스키 생성 흐름을 제공합니다.
✅ 패스키 생성을 허용하기 전에 사용자가 사용할 수 있는 가장 강력한 인증 방법으로 사용자를 인증합니다.
- 이는 공격자가 도용된 계정에서 패스키를 만들지 못하도록 하는 데 중요합니다.
✅ excludeCredentials
를 사용하여 동일한 패스키 제공업체의 중복 패스키 생성을 방지합니다.
- 많은 패스키 제공업체는 계정 및 RP ID당 하나의 패스키만 수용합니다. 중복을 만들지 마세요.
✅ AAGUID를 사용하여 패스키 제공업체를 식별하고 사용자의 사용자 인증 정보 이름을 지정합니다.
- 패스키를 패스키 제공업체와 연결하는 것은 가능한 경우 사용자 인증 정보를 표시하는 직관적인 방법입니다.
✅ 패스키 등록 시도에 실패하면 PublicKeyCredential.signalUnknownCredential()
로 신호를 보냅니다.
- 유효하지 않은 패스키는 혼란을 야기할 수 있습니다. 서버에서 패스키를 등록하지 못한 경우 패스키 제공업체에 알립니다.
✅ 계정의 패스키를 생성하고 등록한 후 사용자에게 알림을 보냅니다.
- 특히 다른 사람이 패스키를 만드는 경우 사용자에게 패스키가 생성되고 있음을 알립니다.
패스키 인증
최소한의 불편 없이 비밀번호 사용자와 패스키 사용자를 모두 수용하는 것은 쉽지 않을 수 있습니다. 양식 자동 완성을 통해 패스키로 로그인에 설명된 안내에 따라 웹사이트에 패스키 양식 자동 완성 기능을 빌드합니다. 다음은 기본 패스키 인증 기능 외에도 확인해야 하는 사항입니다.
✅ 사용자가 양식 자동 완성을 통해 패스키로 로그인하도록 허용합니다.
- 웹사이트에서 비밀번호에서 패스키로 전환하는 경우 두 사용자를 모두 수용하는 가장 좋은 방법은 브라우저의 양식 자동 완성 기능을 사용하는 것입니다.
✅ 백엔드에서 패스키와 일치하는 사용자 인증 정보를 찾을 수 없는 경우 PublicKeyCredential.signalUnknownCredential()
로 신호를 보냅니다.
- 유효하지 않은 패스키는 혼란을 야기할 수 있습니다. 패스키 제공업체에 사용할 수 없는 패스키를 알리면 제공업체에서 삭제할 수 있습니다.
✅ 사용자가 로그인한 후 패스키를 만들지 않은 경우 패스키를 수동으로 만들라는 메시지를 표시합니다.
- 사용자가 아직 패스키를 만들지 않았다면 패스키를 만들도록 안내합니다.
✅ 사용자가 비밀번호 (및 보조 인증 수단)로 로그인한 후 패스키를 자동으로 생성 (조건부 생성)합니다.
- 사용자 패스키 채택을 신속하게 진행합니다.
✅ 사용자가 교차 기기 패스키로 로그인한 경우 로컬 패스키 생성을 요청합니다.
- 로컬 패스키를 만들면 다음부터 사용자가 QR 코드를 스캔하지 않고 로그인할 수 있습니다.
✅ 로그인 후 제공업체에 사용 가능한 패스키 목록과 업데이트된 사용자 세부정보 (사용자 이름, 표시 이름)를 신호로 전달합니다.
- 서버와 패스키 제공업체 간에 패스키 목록과 사용자 세부정보를 동기화하면 사용자 환경이 개선됩니다.
패스키 관리
사용자에게 패스키에 대한 정확한 이해를 제공하면 패스키 환경을 더 잘 이해하고 패스키를 제어하는 데 도움이 됩니다. 사용자가 패스키를 효과적으로 관리하도록 지원하기에 설명된 안내에 따라 웹사이트에 패스키 관리 기능을 빌드합니다. 다음 사항을 확인하세요.
✅ 사용자가 패스키 관리 페이지에서 패스키를 관리하도록 허용합니다.
- 사용자가 패스키를 관리할 수 있는 중앙 장소를 만듭니다.
✅ 여러 패스키 등록을 지원합니다.
- 여러 패스키를 등록할 수 있는 기능을 사용하면 사용자가 더 약한 인증 방법으로 대체하지 않고도 잠김을 방지할 수 있습니다.
✅ 사용자가 관리 페이지에서 새롭고 유연한 유형의 패스키를 추가하도록 허용합니다.
✅ 패스키 이름을 표시합니다.
- AAGUID를 기반으로 패스키의 이름을 지정하고 사용자의 패스키를 눈에 띄게 표시합니다.
✅ 패스키가 동기화 가능 또는 동기화 불가인지 나타냅니다.
- 패스키가 동기화되지 않으면 사용자에게 알립니다.
✅ 사용자가 서버에서 공개 키를 삭제하도록 허용합니다.
✅ 연결된 공개 키가 서버에서 삭제되면 패스키 목록을 신호로 전송합니다.
- 서버와 패스키 제공업체 간에 패스키 목록을 동기화하면 사용자 환경이 개선됩니다.

추가 고려사항
✅ 사용자가 업데이트하면 업데이트된 사용자 세부정보 (사용자 이름, 표시 이름)를 신호합니다.
✅ 사용자가 '비밀번호 찾기'를 사용한 경우 새 비밀번호 대신 패스키를 만듭니다.