AAGUID로 패스키 제공업체 확인

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

패스키 관리 문제

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

RP에서 여러 패스키를 관리하는 사용자의 경우 다른 패스키 중에서 특정 패스키를 수정하거나 삭제해야 할 때 올바른 패스키를 식별하는 것이 어렵습니다. 사용자가 사용하지 않는 패스키를 삭제하려는 경우를 예로 들 수 있습니다. RP는 패스키 목록에 생성 날짜 및 마지막 사용 날짜와 같은 패스키에 관한 정보를 첨부하는 것이 좋습니다. 이를 통해 사용자는 특정 패스키를 찾을 수 있습니다.

RP는 사용자가 패스키가 생성된 직후 또는 나중에 패스키 이름을 지정하도록 허용할 수도 있지만, 많은 사용자가 패스키 이름을 지정하지 않습니다. 클라이언트에서 보낸 신호 또는 공개 키 사용자 인증 정보에 포함된 정보를 반영하여 패스키의 이름을 자동으로 지정하는 것이 이상적입니다.

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

패스키 등록 시 반환된 공개 키 사용자 인증 정보에 포함된 인증자 증명 전 세계 고유 식별자(AAGUID)를 통해 RP는 패스키 제공업체를 확인하고 이를 사용하여 사용자가 적절한 패스키를 쉽게 찾을 수 있도록 할 수 있습니다.

AAGUID로 패스키 제공업체 확인

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

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

RP는 AAGUID를 사용하여 패스키 제공업체를 식별할 수 있습니다. 예를 들어 사용자가 Android 기기에서 Google 비밀번호 관리자를 사용하여 패스키를 만들면 RP는 AAGUID "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"를 수신합니다. 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를 패스키 제공업체에 매핑할 수 있습니다.