AAGUID로 패스키 제공업체 확인

신뢰 당사자 (RP)는 연결된 공개 키 사용자 인증 정보의 AAGUID를 검사하여 패스키가 생성된 패스키 제공업체를 확인할 수 있습니다.

패스키 관리 문제

패스키를 사용하는 이점 중 하나는 사용자가 단일 계정에 여러 개의 패스키를 만들 수 있다는 것입니다. 이러한 유연성과 함께 패스키의 견고성 덕분에 사용자가 패스키 중 하나를 분실하여 계정에 액세스할 수 없게 되더라도 대체 패스키를 사용하여 신뢰 당사자에 계속 로그인할 수 있습니다.

RP에서 여러 패스키를 관리하는 사용자의 과제는 특정 패스키를 수정하거나 삭제해야 할 때 올바른 패스키를 식별하는 것입니다. 사용자가 사용하지 않는 패스키를 삭제하려고 하는 경우를 예로 들 수 있습니다. RP는 패스키 목록에 생성일 및 마지막 사용 날짜와 같은 패스키 정보를 연결하는 것이 좋습니다. 이렇게 하면 사용자가 특정 패스키를 찾는 데 도움이 됩니다.

RP를 사용하면 사용자가 패스키가 생성되자마자 패스키의 이름을 지정할 수 있지만 많은 사용자는 그렇게 하지 않습니다. 클라이언트에서 전송된 신호 또는 공개 키 사용자 인증 정보에 포함된 정보를 반영하여 패스키의 이름을 자동으로 지정하는 것이 좋습니다.

브라우저는 신뢰 당사자가 패스키 이름을 지정하는 데 사용할 수 있는 사용자 에이전트 문자열을 제공하지만 확장 기능이 있는 Android, iOS 또는 데스크톱 브라우저와 같은 플랫폼에서는 서드 파티 비밀번호 관리자로 패스키를 만들 수 있으며 사용자 에이전트 문자열이 실제 패스키 제공자를 나타내지는 않습니다.

RP는 패스키 등록 시 반환되는 공개 키 사용자 인증 정보에 포함된 AAGUID (Authenticator Attestation Globally Unique Identifier)를 사용하여 패스키 제공자를 결정하고 이를 사용하여 사용자가 올바른 패스키를 쉽게 찾을 수 있도록 할 수 있습니다.

AAGUID로 패스키 제공업체 확인

AAGUID는 인증자의 특정 인스턴스가 아니라 인증자의 모델을 식별하는 고유 번호입니다. AAGUID는 공개 키 사용자 인증 정보의 인증자 데이터의 일부로 찾을 수 있습니다.

포함된 인증자 데이터 (증명된 사용자 인증 정보 데이터 포함)와 증명문을 보여주는 증명 객체 레이아웃입니다.
AAGUID는 인증자 데이터에서 찾을 수 있습니다.

RP는 AAGUID를 사용하여 패스키 제공업체를 식별할 수 있습니다. 예를 들어 사용자가 Google 비밀번호 관리자를 사용하여 Android 기기에서 패스키를 만들면 RP는 "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"의 AAGUID를 수신합니다. RP는 패스키 목록의 패스키에 주석을 달아 Google 비밀번호 관리자에서 생성되었음을 나타낼 수 있습니다.

보안 설정 페이지의 패스키 설정에는 각 패스키에 관한 세부정보가 표시됩니다.
패스키 관리 UI 예

AAGUID를 패스키 제공업체에 매핑하기 위해 RP는 커뮤니티에서 제공하는 AAGUID 저장소를 사용할 수 있습니다. 목록에서 AAGUID를 조회하면 패스키 제공업체 이름과 아이콘 SVG 데이터 텍스트를 찾을 수 있습니다.

AAGUID 검색은 대부분의 WebAuthn 라이브러리에서 제공하는 기능입니다. 다음 예는 SimpleWebAuthn을 사용한 서버 측 등록 코드를 보여줍니다.

// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };

...

 // Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
  response: credential,
  expectedChallenge,
  expectedOrigin,
  expectedRPID,
  requireUserVerification: false,
});

...

const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';

결론

AAGUID는 패스키를 생성한 패스키 제공업체를 식별하는 고유 문자열입니다. RP는 AAGUID를 사용하여 사용자가 패스키를 더 쉽게 관리할 수 있도록 할 수 있습니다. 커뮤니티에서 제공하는 AAGUID 저장소를 사용하여 AAGUID를 패스키 제공업체에 매핑할 수 있습니다.