Опубликовано: 4 сентября 2024 г., Последнее обновление: 16 октября 2024 г.
Пробная версия Digital Credentials API начинается с Chrome 128. Digital Credentials API — это новый API веб-платформы, который позволяет веб-сайтам выборочно запрашивать проверяемую информацию о пользователе с помощью цифровых учетных данных, таких как водительские права или национальное удостоверение личности, хранящееся в цифровой кошелек.
Фон
Цифровая идентификация в реальном мире становится реальностью, поскольку многие государственные и частные организации начинают выдавать цифровые учетные данные, привязанные к устройствам. Например, мобильные водительские права и удостоверения личности в некоторых штатах США (таких как Аризона, Калифорния, Колорадо, Джорджия и Мэриленд) теперь могут быть переданы в приложения цифрового кошелька, такие как Google Wallet, на мобильных устройствах. Также появляются правила, касающиеся принятия цифровых учетных данных для определенных онлайн-проверок, и eIDAS 2.0 является одним из примеров.
Характеристики цифровых учетных данных зависят от их формата, но обычно они включают в себя:
- Повышенная безопасность и конфиденциальность . Использование передовых методов шифрования и строгой аутентификации помогает защитить конфиденциальные данные и обеспечивает безопасный доступ. Например, предоставление учетных данных обычно защищено аутентификацией пользователя через приложение кошелька.
- Выборочное раскрытие . Доверяющие стороны (RP) могут запрашивать выбранную информацию из учетных данных, что позволяет пользователям ограничивать передаваемые данные теми, которые необходимы для конкретного варианта использования. Например, можно сообщить, исполнилось ли пользователю 18 лет, не раскрывая дату рождения пользователя.
- Совместимость : сертификаты должны соответствовать международным стандартам, обеспечивая совместимость между различными системами и странами и облегчая трансграничное признание.
- Проверяемость : передаваемые учетные данные имеют цифровую подпись эмитента; RP может проверить эту подпись, чтобы убедиться в подлинности данных.
Поскольку цифровые учетные данные поддаются проверке, их можно использовать в следующих случаях:
- Проверка возраста: запросите возраст, чтобы подтвердить возраст человека, прежде чем показывать контент с возрастными ограничениями или покупать товары с возрастными ограничениями.
- Проверка личности: запросите имя и адрес, чтобы подтвердить личность человека в целях соблюдения законодательства или предотвращения мошенничества.
- Проверка водительских прав: проверьте право человека на вождение (например, при аренде автомобиля).
Поскольку веб-сайты начали напрямую взаимодействовать с приложениями мобильных кошельков (например, с помощью пользовательских схем URL-адресов) для запроса цифровых учетных данных для различных случаев использования, браузеры видят возможность сделать это взаимодействие более безопасным, устойчивым к злоупотреблениям и более простым в использовании с помощью целевого использования. встроенный API.
Представляем API цифровых учетных данных
API цифровых учетных данных — это новый API веб-платформы, который позволяет веб-сайтам RP запрашивать представление цифровых учетных данных из приложений-кошельков. API доступен в Chrome в виде пробной версии, начиная с Chrome 128.
API не зависит от протокола, что позволяет RP указывать протокол в соответствии со своими требованиями. Когда RP делает запрос, браузер отправляет запрос в мобильную операционную систему, которая ищет соответствующие учетные данные в установленных приложениях-кошельках. Если они обнаружены, мобильная операционная система предлагает пользователю выбрать один и отправляет запрос на выбранный пользователем кошелек. После локальной аутентификации кошелек возвращает ответ, содержащий запрошенные учетные данные.
Chrome сначала будет поддерживать API в Chrome на Android для запроса учетных данных из приложений кошелька на том же устройстве. В будущем мы планируем поддерживать настольный Chrome для запроса учетных данных на нескольких устройствах с другого мобильного устройства.
При запуске Google Wallet будет интегрироваться с API цифровых учетных данных, что позволит отдельным предприятиям и организациям инициировать запрос пользователей на предоставление своего удостоверения личности онлайн через Chrome на Android и проверять подлинность передаваемых данных путем проверки криптографической подписи. Чтобы принять участие, заполните эту форму , чтобы выразить заинтересованность в приеме цифровых идентификаторов из Google Кошелька.
API также скоро будет использоваться аккаунтами Google для проверки даты рождения определенных пользователей. Пользователи, проживающие в поддерживаемом штате США, смогут использовать свой идентификатор штата или водительские права, предоставленные в доступных приложениях-кошельках (включая Google Wallet), чтобы легко сообщать Google только дату своего рождения, не раскрывая другие подробности своей личности. Это позволяет пользователям с соблюдением конфиденциальности демонстрировать Google, что они соответствуют возрастным требованиям , связанным с учетной записью.
Попробуйте это
Требования:
- Сервисы Google Play 23.40 или новее
- Chrome 128 или новее
- Включите флаг на
chrome://flags#web-identity-digital-credentials
Чтобы попробовать API цифровых учетных данных, следуйте инструкциям:
- Установите демо-приложение кошелька, следуя инструкциям.
- Загрузите демо-приложение кошелька на свое устройство Android. Исходный код можно найти в репозитории Identity Credentials OpenWallet Foundation.
- Запустите команду
adb install -t <path-to-apk>
чтобы установить приложение.
- Запустите приложение IC Wallet и предоставьте демонстрационное мобильное водительское удостоверение (mDL).
- Нажмите кнопку меню и выберите «Добавить самоподписанный документ».
- Перейдите на https://digital-credentials.dev в Chrome 128 или более поздней версии.
- Нажмите «Запросить учетные данные» (OpenID4VP).
Посмотрите демонстрацию, в которой используется https://digital-credentials.dev , тестовый веб-сайт, позволяющий разработчикам генерировать запросы учетных данных для различных атрибутов:
Вот как пошагово работает демо:
Как работает API
API цифровых учетных данных построен на основе 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 аналогична navigator.credentials.get()
, за исключением того, что он принимает только "digital"
тип учетных данных. В тип цифровых учетных данных добавьте массив providers
, содержащий IdentityRequestProvider
со следующими основными параметрами:
-
protocol
: укажите протокол обмена с помощью строки. На момент первоначального испытания основным разрабатываемым протоколом был"openid4vp"
. -
request
: заполните параметры, которые приложения цифрового кошелька принимают для указанного протокола. Для"openid4vp"
параметры определяются в OpenID для проверяемого представления (OID4VP) для спецификации API цифровых учетных данных W3C .
Пример полезных данных для типа цифровых учетных данных с использованием 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"
, а ответ содержит "vp_token"
в свойстве data
. См. OpenID для проверяемого представления (OID4VP) для спецификации W3C Digital Credentials API, чтобы узнать, как анализировать ответ и проверять учетные данные.
Digital Credentials API поддерживается в Chrome на Android в качестве пробной версии . Chrome на компьютере и iOS в настоящее время не поддерживает его. Что касается других браузерных движков, активные обсуждения ведутся через группу сообщества W3C Web Incubator .
Примите участие в испытании происхождения
Для разработки вы можете включить API цифровых учетных данных локально, включив флаг Chrome chrome://flags#web-identity-digital-credentials
в Chrome 128 или более поздней версии.
Эта функция также доступна в виде пробной версии. Пробные версии Origin позволяют вам опробовать новые функции и оставить отзыв об их удобстве использования, практичности и эффективности сообществу веб-стандартистов. Дополнительную информацию см. в разделе Начало работы с пробными версиями Origin . Чтобы подписаться на ту или иную пробную версию Origin, посетите страницу регистрации .
- Запросите токен для вашего происхождения.
- Добавьте токен на свои страницы. Есть два способа сделать это:
- Добавьте тег
<meta>
origin-trial
в заголовок каждой страницы. Например, это может выглядеть примерно так:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- Если вы можете настроить свой сервер, вы также можете добавить токен, используя HTTP-заголовок
Origin-Trial
. Результирующий заголовок ответа должен выглядеть примерно так:Origin-Trial: TOKEN_GOES_HERE.
- Добавьте тег
Поделиться отзывом
Если у вас есть какие-либо отзывы об API Digital Credentials, отправьте их в специальный трекер проблем Chromium .