Android용 FIDO2 API

FIDO2 API를 사용하면 Android 애플리케이션에서 사용자 인증을 목적으로 강력하고 증명된 공개 키 기반 사용자 인증 정보를 만들고 사용할 수 있습니다. 이 API는 BLE, NFC, USB 로밍 인증자 (보안 키)의 사용을 지원하는 WebAuthn 클라이언트 구현과 사용자가 지문 또는 화면 잠금을 사용하여 인증할 수 있는 플랫폼 인증자를 제공합니다.

통합

FIDO2 API 진입점은 Fido2ApiClient입니다.

API는 다음 두 가지 작업을 지원합니다.

  • 등록은 사용자가 인증자를 계정과 연결할 때 계정당 인증자당 한 번 실행됩니다.
  • 신뢰 당사자가 사용자를 인증하려고 할 때마다 서명이 수행됩니다.

등록과 서명 모두에 사용자 상호작용이 필요합니다.

API 사용을 보여주는 샘플 애플리케이션은 https://github.com/android/identity-samples/tree/main/Fido2에서 확인할 수 있습니다.

웹사이트와의 상호 운용성

사용자가 웹사이트와 Android 애플리케이션에서 사용자 인증 정보를 원활하게 공유하도록 허용하는 방법은 간단합니다. 이렇게 하려면 디지털 애셋 링크를 활용하세요. 웹사이트에서 디지털 애셋 링크 JSON 파일을 호스팅하고 디지털 애셋 링크 파일 링크를 앱의 매니페스트에 추가하여 연결을 선언할 수 있습니다.

예를 들어 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 App Links 문서를 참조하세요.

Android 앱에서 <application> 아래의 매니페스트 파일에 다음 줄을 추가합니다.

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

3단계: strings.xml 파일에 asset_statements 문자열 리소스를 추가하세요.

asset_statements 문자열은 로드할 assetlinks.json 파일을 지정하는 JSON 객체입니다. 아포스트로피와 따옴표는 문자열에서 이스케이프 처리해야 합니다. 예를 들면 다음과 같습니다.

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

앱과 웹사이트를 연결하는 방법에 관한 자세한 내용은 Android의 비밀번호 대용 SmartLock 문서를 참조하세요.