API FIDO2 для Android

API FIDO2 позволяет приложениям Android создавать и использовать надежные, проверенные учетные данные на основе открытого ключа для аутентификации пользователей. API предоставляет реализацию клиента WebAuthn , которая поддерживает использование роуминговых аутентификаторов BLE, NFC и USB (ключей безопасности), а также аутентификатор платформы, который позволяет пользователю проходить аутентификацию с помощью отпечатка пальца или блокировки экрана.

Интеграция

Точкой входа в API FIDO2 является Fido2ApiClient .

API поддерживает две операции:

  • Регистрация выполняется один раз для каждого аутентификатора для каждой учетной записи, когда пользователь связывает аутентификатор с учетной записью.
  • Подписание выполняется всякий раз, когда проверяющая сторона хочет аутентифицировать пользователя.

Как регистрация, так и подписание требуют взаимодействия с пользователем.

Пример приложения, демонстрирующего использование API, можно найти по адресу https://github.com/android/identity-samples/tree/main/Fido2 .

Совместимость с вашим сайтом

Разрешить пользователям беспрепятственно обмениваться учетными данными на вашем веб-сайте и в приложении Android очень просто. Для этого используйте ссылки на цифровые активы . Вы можете объявить ассоциации, разместив файл JSON Digital Asset Links на своем веб-сайте и добавив ссылку на файл Digital Asset Link в манифест вашего приложения.

Например, если вы хотите связать https://example.com с приложением Android com.example.android , выполните следующие 3 шага:

Шаг 1. Разместите файл assetlinks.json в своем домене.

Создайте такой файл JSON и разместите его по адресу https://example.com/.well-known/assetlinks.json .

[
  {
    "relation" : [
      "delegate_permission/common.handle_all_urls",
      "delegate_permission/common.get_login_creds"
    ],
    "target" : {
      "namespace" : "web",
      "site" : "https://example.com"
    }
  },
  {
    "relation" : [
      "delegate_permission/common.handle_all_urls",
      "delegate_permission/common.get_login_creds"
    ],
    "target" : {
      "namespace" : "android_app",
      "package_name" : "com.example.android",
      "sha256_cert_fingerprints" : [
         "DE:AD:BE:EF"
      ]
    }
  }
]

Убедитесь, что он доступен для сканирования в Google и обслуживается с HTTP-заголовком Content-Type: application/json .

sha256_cert_fingerprints — это отпечатки SHA256 сертификата подписи вашего приложения. Более подробную информацию можно найти в документации по ссылкам на приложения Android .

В приложении Android добавьте следующую строку в файл манифеста в разделе <application> :

<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

Шаг 3. Добавьте строковый ресурс asset_statements в файл strings.xml.

Строка asset_statements — это объект JSON, который указывает файлы assetlinks.json для загрузки. Вы должны избегать любых апострофов и кавычек, которые вы используете в строке. Например:

<string name="asset_statements" translatable="false">
[{
  \"include\": \"https://example.com/.well-known/assetlinks.json\"
}]
</string>

Чтобы узнать больше о связывании вашего приложения и вашего веб-сайта, прочтите документацию SmartLock для паролей на Android .