게시일: 2024년 9월 4일, 최종 업데이트: 2024년 10월 16일
Digital Credentials API의 오리진 트라이얼은 Chrome 128부터 시작됩니다. 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의 Identity Credentials 저장소에서 찾을 수 있습니다.
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 Digital Credentials 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에 제출하세요.