게시일: 2024년 9월 4일, 최종 업데이트: 2024년 10월 16일
Chrome 128부터 Digital Credentials API의 오리진 트라이얼이 시작됩니다. Digital Credentials API는 웹사이트에서 디지털 지갑에 저장된 운전면허증 또는 주민등록증과 같은 디지털 인증서를 통해 사용자에 관한 확인 가능한 정보를 선택적으로 요청할 수 있는 새로운 웹 플랫폼 API입니다.
배경
많은 공공 및 민간 기관에서 기기 연결 디지털 인증서를 발급하기 시작하면서 실제 디지털 ID가 현실화되고 있습니다. 예를 들어 이제 일부 미국 주 (예: 애리조나, 캘리포니아, 콜로라도, 조지아, 메릴랜드)의 모바일 운전면허증 및 신분증을 휴대기기의 Google 월렛과 같은 디지털 지갑 앱에 프로비저닝할 수 있습니다. 특정 온라인 인증에 대한 디지털 인증서의 수락과 관련된 규정도 등장하고 있으며 eIDAS 2.0이 그 예입니다.
디지털 사용자 인증 정보의 기능은 형식에 따라 다르지만 일반적으로 다음을 포함합니다.
- 보안 및 개인 정보 보호 강화: 고급 암호화 및 강력한 인증 방법을 사용하면 민감한 정보를 보호하고 안전하게 액세스할 수 있습니다. 예를 들어 사용자 인증 정보 제시는 일반적으로 월렛 앱을 통한 사용자 인증 뒤에 보호됩니다.
- 선별적 공개: 신뢰 당사자 (RP)가 사용자 인증 정보에서 일부 정보를 요청할 수 있으므로 사용자는 공유되는 데이터를 사용 사례에 필요한 데이터로 제한할 수 있습니다. 예를 들어 사용자의 생년월일을 공개하지 않고도 사용자가 18세 이상인지 여부를 공유할 수 있습니다.
- 상호 운용성: 사용자 인증 정보는 국제 표준을 준수하여 다양한 시스템과 국가 간에 호환성을 지원하고 국경 간 수용을 용이하게 해야 합니다.
- 검증 가능성: 공유된 사용자 인증 정보 데이터는 발급자가 디지털 서명합니다. RP는 이 서명을 확인하여 데이터의 신뢰성을 확인할 수 있습니다.
디지털 인증서의 검증 가능한 특성으로 인해 다음과 같은 사용 사례를 지원할 수 있습니다.
- 연령 인증: 연령 제한 콘텐츠를 게재하거나 연령 제한 상품을 구매하기 전에 사용자의 연령을 인증하기 위해 연령을 요청합니다.
- 신원 확인: 법규 준수 또는 사기 방지를 위해 사용자의 신원을 확인하기 위해 이름과 주소를 요청합니다.
- 운전 면허 확인: 운전 자격 요건을 확인합니다 (예: 자동차를 렌트할 때).
웹사이트가 맞춤 URL 스키마를 사용하여 모바일 지갑 애플리케이션과 직접 통신하여 다양한 사용 사례에 필요한 디지털 사용자 인증 정보를 요청하기 시작함에 따라 브라우저는 이러한 상호작용을 더 안전하고 악용에 강하며 목적에 맞게 설계된 API를 통해 더 쉽게 사용할 수 있는 기회를 보고 있습니다.
Digital Credentials API 소개
Digital Credentials API는 RP 웹사이트에서 지갑 앱에 디지털 인증 정보 표시를 요청할 수 있는 새로운 웹 플랫폼 API입니다. 이 API는 Chrome 128부터 Chrome에서 오리진 체험판으로 제공됩니다.
이 API는 프로토콜에 관계없이 RP가 요구사항에 따라 프로토콜을 지정할 수 있도록 합니다. RP가 요청하면 브라우저는 모바일 운영체제에 요청을 전송하고 모바일 운영체제는 설치된 지갑 애플리케이션에서 일치하는 사용자 인증 정보를 검색합니다. 찾은 경우 모바일 운영체제는 사용자에게 지갑을 선택하라는 메시지를 표시하고 사용자가 선택한 지갑에 요청을 전송합니다. 로컬 인증 후 지갑은 요청된 사용자 인증 정보 데이터가 포함된 응답을 반환합니다.
Chrome은 먼저 동일한 기기의 지갑 앱에서 사용자 인증 정보를 요청하기 위한 Android용 Chrome의 API를 지원합니다. 향후 Chrome 데스크톱에서 다른 휴대기기에서 교차 기기 사용자 인증 정보를 요청할 수 있도록 지원할 계획입니다.
출시 시 Google 월렛은 Digital Credentials API와 통합되므로 일부 비즈니스 및 조직은 Android의 Chrome을 통해 사용자가 온라인으로 신분증을 제시하도록 요청하고 암호화 서명을 검사하여 전송된 데이터의 진위를 확인할 수 있습니다. 참여하려면 이 양식을 작성하여 Google 월렛의 디지털 신분증 수락에 관심이 있음을 알리세요.
또한 곧 Google 계정에서 특정 사용자의 생년월일을 확인하는 데 이 API가 사용될 예정입니다. 지원되는 미국 주의 거주자는 사용 가능한 지갑 앱 (Google 월렛 포함)에 프로비저닝된 주 ID 또는 운전면허증을 사용하여 신원 관련 다른 세부정보를 공유하지 않고도 생년월일만 Google과 원활하게 공유할 수 있습니다. 이를 통해 사용자는 개인 정보를 보호하는 방식으로 Google에 계정 관련 연령 요건을 충족함을 입증할 수 있습니다.
사용해 보기
요건:
- Google Play 서비스 23.40 이상
- Chrome 128 이상
chrome://flags#web-identity-digital-credentials
에서 플래그 사용 설정
Digital Credentials API를 사용해 보려면 다음 안내를 따르세요.
- 안내에 따라 데모 월렛 애플리케이션을 설치합니다.
- Android 기기에 데모 월렛 애플리케이션을 다운로드합니다. 소스 코드는 OpenWallet Foundation의 ID 인증 저장소에서 확인할 수 있습니다.
adb install -t <path-to-apk>
명령어를 실행하여 앱을 설치합니다.
- IC 월렛 앱을 실행하고 데모 모바일 운전면허증(mDL)을 프로비저닝합니다.
- 메뉴 버튼을 탭하고 서명한 문서 추가를 선택합니다.
- Chrome 128 이상을 사용하여 https://digital-credentials.dev로 이동합니다.
- Request Credentials (OpenID4VP)(사용자 인증 정보 요청(OpenID4VP))를 누릅니다.
개발자가 다양한 속성에 대한 사용자 인증 정보 요청을 생성할 수 있는 테스트 웹사이트인 https://digital-credentials.dev를 사용하는 데모를 확인하세요.
데모의 작동 방식은 다음과 같습니다.
API의 작동 방식
Digital Credentials API는 Credential Management API의 기반 위에 구축되지만 독립적인 API 노출 영역인 navigator.identity
에서 구축됩니다. 웹사이트는 navigator.identity.get()
를 호출하여 모바일 지갑 앱에 저장된 디지털 사용자 인증 정보를 요청할 수 있습니다.
// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
signal: controller.signal,
digital: {
providers: [{
protocol: "openid4vp",
request: {
response_type: "vp_token",
nonce: "n-0S6_WzA2Mj",
client_metadata: {...},
presentation_definition: {...}
}
}],
}
});
기본 API 노출 영역은 "digital"
사용자 인증 정보 유형만 허용한다는 점을 제외하고 navigator.credentials.get()
와 유사합니다. 디지털 사용자 인증 정보 유형 내에 다음 기본 매개변수와 함께 IdentityRequestProvider
가 포함된 providers
배열을 추가합니다.
protocol
: 문자열로 교환 프로토콜을 지정합니다. 출처 체험판 시점에서 개발 중인 기본 프로토콜은"openid4vp"
입니다.request
: 디지털 지갑 앱이 지정된 프로토콜에 대해 허용하는 매개변수를 입력합니다."openid4vp"
의 경우 매개변수는 W3C 디지털 인증서 API용 증빙 가능한 프레젠테이션을 위한 OpenID (OID4VP) 사양에 정의되어 있습니다.
OID4VP를 사용하는 디지털 사용자 인증 정보 유형의 페이로드 예시:
{
protocol: 'openid4vp',
request: {
response_type: 'vp_token',
nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
client_metadata: {},
presentation_definition: {
id: 'mDL-request-demo',
input_descriptors: [{
id: "org.iso.18013.5.1.mDL",
format: {
mso_mdoc: {
alg: ["ES256"]
}
},
constraints: {
limit_disclosure: "required",
fields: [
{
path: ["$['org.iso.18013.5.1']['family_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['given_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['age_over_21']"],
intent_to_retain: false
}
]
}
}],
}
}
}
이 요청을 통해 기기에 mDL이 있는 지갑은 다음을 포함하는 검증 가능한 사용자 인증 정보 세트를 제공합니다.
- 사용자의 성입니다.
- 사용자의 이름입니다.
- 사용자가 21세 이상인지 여부를 나타내는 불리언 값입니다.
다음은 응답 페이로드의 예입니다.
{
data: '{\n "vp_token": "o2d2ZXJzaW9uYz..."\n}'
id: '',
protocol: 'openid4vp',
type: 'digital'
}
이 예에서는 "openid4vp"
프로토콜로 사용자 인증 정보가 요청되었으며 응답의 data
속성에 "vp_token"
가 포함되어 있습니다. 응답을 파싱하고 사용자 인증 정보를 확인하는 방법을 알아보려면 W3C 디지털 인증 정보 API용 OpenID for Verifiable Presentation (OID4VP) 사양을 참고하세요.
Digital Credentials API는 Android용 Chrome에서 시작판으로 지원됩니다. 데스크톱 및 iOS의 Chrome에서는 현재 지원되지 않습니다. 다른 브라우저 엔진의 경우 W3C 웹 인큐베이터 커뮤니티 그룹을 통해 활발한 대화가 이루어지고 있습니다.
오리진 트라이얼 참여
개발의 경우 Chrome 128 이상에서 Chrome 플래그 chrome://flags#web-identity-digital-credentials
를 사용 설정하여 로컬에서 Digital Credentials API를 사용 설정할 수 있습니다.
이 기능은 출처 무료 체험판으로도 제공됩니다. 오리진 트라이얼을 통해 새로운 기능을 사용해 보고 웹 표준 커뮤니티에 사용성, 실용성, 효과에 관한 의견을 제공할 수 있습니다. 자세한 내용은 출처 무료 체험판 시작하기를 참고하세요. 이 무료 체험 또는 다른 출처 무료 체험에 가입하려면 등록 페이지를 방문하세요.
- 출처의 토큰을 요청합니다.
- 페이지에 토큰을 추가합니다. 다음과 같은 두 가지 방법이 있습니다.
- 각 페이지의 헤더에
origin-trial
<meta>
태그를 추가합니다. 예를 들어 다음과 같이 표시될 수 있습니다.<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- 서버를 구성할 수 있는 경우
Origin-Trial
HTTP 헤더를 사용하여 토큰을 추가할 수도 있습니다. 결과 응답 헤더는 다음과 같이 표시됩니다.Origin-Trial: TOKEN_GOES_HERE.
- 각 페이지의 헤더에
의견 공유
Digital Credentials API에 관한 의견이 있으면 전용 Chromium Issue Tracker에 제출하세요.