前提条件

アプリとウェブサイト全体で Credential Manager を使用してシームレスなログイン エクスペリエンスを実装するための主な前提条件は、アプリとウェブサイト間の安全な関連付けを確立することです。これは、認証情報プロバイダがアプリとウェブサイトの間で認証情報を安全に共有できるようにする Digital Asset Links ファイルを使用して実現されます。たとえば、ウェブサイトはデジタル アセット リンク ファイルを使用して、Android アプリや別のウェブサイトと認証情報を共有することを宣言できます。デジタル アセットリンクを使用すると、ユーザーはシームレスなログイン操作を行えるようになり、関連付けられたアプリやウェブサイトで同じ保存済みの認証情報を使用できるようになります。

認証情報プロバイダがアプリとウェブサイトでパスキーとパスワードを共通して使用できるようにするには、次の手順でアプリのデジタル アセット リンク ファイルを作成します。

次の構造の assetlinks.json という名前のファイルを作成します。

[
    {
    "relation" : [
        "<array_of_permissions_granted_to_app>"
    ],
    "target" : {
        "namespace" : "android_app",
        "package_name" : "<android_application_package_name>",
        "sha256_cert_fingerprints" : [
            "<sha256_certificate_fingerprint_of_signing_key>"
]
    }
}
]
  • relation: 宣言される関係を記述する 1 つ以上の文字列の配列。アプリとサイトがログイン認証情報を共有することを宣言するには、配列で次の関係を指定します。

    • delegate_permission/common.handle_all_urls: この関連付けにより、Android アプリリンクが有効になります。これにより、Android アプリで特定のドメインのすべてのウェブ URL を処理できるようになります。

    • delegate_permission/common.get_login_creds: この関連付けにより、ウェブサイトと Android アプリの間で認証情報を共有できます。

  • target: 宣言が適用されるアセットを指定するオブジェクト。

    • target.namespace: android_app に設定します。
    • target.package_name: アプリのマニフェストで宣言されているパッケージ名(com.example.android など)に設定します。
  • sha256_cert_fingerprints: アプリの署名証明書の SHA256 フィンガープリント。アプリの SHA256 フィンガープリントを取得するには、ウェブサイトの関連付けを宣言するをご覧ください。

アプリのターゲットの例を次に示します。

[
  {
    "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" : [
        SHA_HEX_VALUE
      ]
    }
  }
]

デジタル アセット リンクの JSON ファイルを、ウェブサイトのログイン ドメインの次の場所でホストします。

```none
https://domain[:optional_port]/.well-known/assetlinks.json
```

たとえば、ログイン ドメインが signin.example.com の場合は、ファイルを https://signin.example.com/.well-known/assetlinks.json でホストします。

デジタル アセット リンク ファイルの MIME タイプは JSON にする必要があります。サーバーがレスポンスで Content-Type: application/json ヘッダーを送信し、HTTP ステータスが 200 に設定されていることを確認します。

3. デジタル アセット リンク ファイルの取得を許可する

ホストを更新して、Google がデジタル アセット リンク ファイルを取得できるようにします。ほとんどのウェブサイトでは、自動エージェントに /.well-known/ パス内のファイルの取得を許可すると、他のサービスがこれらのファイルのメタデータにアクセスできるようになります。

robots.txt ファイルがある場合は、次のように robots.txt を更新して、ウェブ クローラが /.well-known/assetlinks.json を取得できるようにします。

User-agent: *
Allow: /.well-known/

4. アプリのマニフェストを更新する

アプリのマニフェスト ファイルで、<application> の下に次の行を追加します。

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

5. パスワードの Digital Asset Links を設定する

パスワードに認証情報マネージャーを使用している場合は、デジタル アセット リンクを設定する追加の手順を完了する必要があります。

マニフェスト ファイルに、読み込む assetlinks.json ファイルを指定するオブジェクトを追加します。次の例に示すように、文字列で使用するアポストロフィや引用符はエスケープする必要があります。

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

https://signin.example.com/.well-known/assetlinks.json リンクは HTTP 200 レスポンスを返し、Content-Type ヘッダーが application/json である必要があります。レスポンスに 301 または 302 HTTP リダイレクト、または JSON 以外の Content-Type が含まれている場合、検証は失敗します。

次の例は、リクエストの例と想定されるレスポンス ヘッダーを示しています。

> GET /.well-known/assetlinks.json HTTP/1.1
> User-Agent: curl/7.35.0
> Host: signin.example.com

< HTTP/1.1 200 OK
< Content-Type: application/json

次のステップ

必要な依存関係を追加し、パスキーのデジタル アセット リンクを設定したら、認証情報マネージャーを使用して、サポートされている認証方法(パスキーと「Google でログイン」)を実装できます。ご利用にあたっては、次のデベロッパー ガイドをご覧ください。