Представляем пробную версию API Digital Credentials API

Опубликовано: 4 сентября 2024 г.

Пробная версия API цифровых учетных данных стартует в Chrome 128. API цифровых учетных данных — это новый API веб-платформы, который позволяет веб-сайтам выборочно запрашивать проверяемую информацию о пользователе с помощью цифровых учетных данных, таких как водительские права или национальное удостоверение личности, хранящееся в цифровом кошельке.

Фон

Реальная цифровая идентификация становится реальностью, поскольку многие государственные и частные организации начинают выпускать привязанные к устройствам цифровые удостоверения. Например, мобильные водительские права и удостоверения личности в некоторых штатах США (таких как Аризона, Калифорния, Колорадо, Джорджия и Мэриленд) теперь могут быть предоставлены приложениям цифровых кошельков, таким как Google Wallet на мобильных устройствах. Также появляются правила, касающиеся принятия цифровых удостоверений для определенных онлайн-проверок, и eIDAS 2.0 является одним из примеров.

Мобильное водительское удостоверение в Google Wallet
Мобильное водительское удостоверение в Google Wallet.

Функции цифрового удостоверения личности зависят от его формата, хотя обычно они включают в себя:

  • Улучшенная безопасность и конфиденциальность : использование передовых методов шифрования и надежной аутентификации помогает защитить конфиденциальные данные и обеспечивает безопасный доступ. Например, предоставление учетных данных обычно защищено аутентификацией пользователя через приложение кошелька.
  • Выборочное раскрытие : проверяющие стороны (RP) могут запрашивать выбранную информацию из учетных данных, позволяя пользователям ограничивать передаваемые данные тем, что необходимо для конкретного варианта использования. Например, можно предоставить информацию о том, старше ли пользователь 18 лет, не раскрывая дату рождения пользователя.
  • Совместимость : удостоверение личности должно соответствовать международным стандартам, обеспечивая совместимость с различными системами и странами, облегчая трансграничное признание.
  • Проверяемость : предоставленные учетные данные имеют цифровую подпись эмитента; RP может проверить эту подпись, чтобы подтвердить подлинность данных.

Благодаря проверяемому характеру цифровых учетных данных они могут использоваться в таких случаях, как:

  • Проверка возраста: запросите возраст, чтобы проверить возраст человека перед показом контента с возрастными ограничениями или покупкой товаров с возрастными ограничениями.
  • Проверка личности: запрос имени и адреса для проверки личности человека в целях соблюдения законодательства или предотвращения мошенничества.
  • Проверка водительских прав: проверка права человека управлять транспортным средством (например, при аренде автомобиля).

Поскольку веб-сайты начали напрямую взаимодействовать с приложениями мобильных кошельков (например, с помощью схем пользовательских URL-адресов) для запроса цифровых учетных данных для различных вариантов использования, браузеры видят возможность сделать это взаимодействие более безопасным, устойчивым к злоупотреблениям и более простым в использовании с помощью специально разработанного API.

Представляем API цифровых учетных данных

Digital Credentials API — это новый API веб-платформы, который позволяет веб-сайтам RP запрашивать представление цифровых учетных данных из приложений-кошельков. API доступен в Chrome в качестве пробной версии origin, начиная с Chrome 128.

API не зависит от протокола, что позволяет RP указывать протокол на основе своих требований. Когда RP делает запрос, браузер отправляет запрос в мобильную операционную систему, которая ищет соответствующие учетные данные в установленных приложениях кошелька. Если таковые найдены, мобильная операционная система предлагает пользователю выбрать один из них и отправляет запрос в выбранный пользователем кошелек. После локальной аутентификации кошелек возвращает ответ, содержащий запрошенные учетные данные.

Схема взаимодействия браузера, кошелька и проверяющей стороны.

Chrome сначала будет поддерживать API в Chrome на Android для запроса учетных данных из приложений кошелька на том же устройстве. В будущем мы планируем поддерживать Chrome desktop для запроса учетных данных между устройствами с другого мобильного устройства.

На момент запуска Google Wallet будет интегрирован с API цифровых учетных данных, что позволит некоторым компаниям и организациям инициировать запрос на предоставление пользователями своего удостоверения личности онлайн через Chrome на Android и проверять подлинность переданных данных путем проверки криптографической подписи. Чтобы принять участие, заполните эту форму , чтобы выразить заинтересованность в принятии цифровых удостоверений личности от Google Wallet.

API также скоро будет использоваться аккаунтами Google для проверки даты рождения определенных пользователей. Пользователи, проживающие в поддерживаемом штате США, смогут использовать свое удостоверение личности штата или водительские права, предоставленные в доступных приложениях-кошельках (включая Google Wallet), чтобы легко сообщать Google только дату своего рождения, не раскрывая другие данные своей личности. Это позволяет пользователям продемонстрировать Google, сохраняя конфиденциальность, что они соответствуют возрастным требованиям, связанным с аккаунтом.

Попробуйте это

Требования:

  • Сервисы Google Play 23.40 или более поздние версии
  • Chrome 128 или более поздняя версия
  • Включите флаг на chrome://flags#web-identity-digital-credentials

Чтобы попробовать API цифровых учетных данных, следуйте инструкциям:

  1. Установите демо-приложение кошелька, следуя инструкциям.
  2. Запустите приложение IC Wallet и получите демо-мобильное водительское удостоверение (mDL).
    • Нажмите кнопку меню и выберите «Добавить самоподписанный документ».
  3. Перейдите по адресу https://digital-credentials.dev в Chrome 128 или более поздней версии.
  4. Пресс -релиз «Запрос учетных данных» (OpenID4VP).

Ознакомьтесь с демонстрацией, которая использует https://digital-credentials.dev — тестовый веб-сайт для разработчиков, позволяющий генерировать запросы учетных данных для различных атрибутов:

Вот как работает демо-версия шаг за шагом:

1. Пользователь попадает на веб-сайт проверяющей стороны, где ему предлагается предоставить свою подтвержденную фамилию, имя и подтвердить свой возраст, а именно, что ему больше 21 года.
2. Браузер подтверждает, намерен ли пользователь предоставить какие-либо цифровые учетные данные этому веб-сайту.
3. Операционная система отображает запрашиваемую информацию и соответствующие учетные данные, которые могут соответствовать запросу, чтобы пользователь мог выбрать и выполнить запрос.
4. Кошелек локально аутентифицирует пользователя с помощью разблокировки экрана.

5. Запрошенные цифровые учетные данные теперь передаются на веб-сайт проверяющей стороны.

Как работает 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 со следующими базовыми параметрами:

Пример полезной нагрузки для типа цифровых удостоверений с использованием 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, чтобы узнать, как проанализировать ответ и проверить учетные данные.

API цифровых учетных данных поддерживается в Chrome на Android в качестве пробной версии . Chrome на десктопе и iOS в настоящее время не поддерживает его. Для других браузерных движков активные обсуждения ведутся через группу сообщества W3C Web Incubator .

Примите участие в исследовании происхождения

Для разработки вы можете включить API цифровых учетных данных локально, включив флаг Chrome chrome://flags#web-identity-digital-credentials в Chrome 128 или более поздней версии.

Эта функция также доступна в качестве пробной версии Origin. Пробные версии Origin позволяют вам попробовать новые функции и дать отзыв об их удобстве использования, практичности и эффективности сообществу веб-стандартов. Для получения дополнительной информации см. раздел Начало работы с пробными версиями Origin . Чтобы зарегистрироваться для этой или другой пробной версии Origin, посетите страницу регистрации .

  1. Запросите токен для вашего источника.
  2. Добавьте токен на свои страницы. Есть два способа сделать это:
    • Добавьте тег origin-trial <meta> в заголовок каждой страницы. Например, это может выглядеть примерно так: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Если вы можете настроить свой сервер, вы также можете добавить токен с помощью заголовка HTTP Origin-Trial . Результирующий заголовок ответа должен выглядеть примерно так: Origin-Trial: TOKEN_GOES_HERE.

Поделиться отзывом

Если у вас есть какие-либо отзывы об API цифровых учетных данных, отправьте их в специальный трекер ошибок Chromium .