アプリとウェブサイト全体で Credential Manager を使用してシームレスなログイン エクスペリエンスを実装するための主な前提条件は、アプリとウェブサイト間の安全な関連付けを確立することです。これは、認証情報プロバイダがアプリとウェブサイトの間で認証情報を安全に共有できるようにする Digital Asset Links ファイルを使用して実現されます。たとえば、ウェブサイトはデジタル アセット リンク ファイルを使用して、Android アプリや別のウェブサイトと認証情報を共有することを宣言できます。デジタル アセットリンクを使用すると、ユーザーはシームレスなログイン操作を行えるようになり、関連付けられたアプリやウェブサイトで同じ保存済みの認証情報を使用できるようになります。
アプリとウェブサイト間の Digital Asset Links を構成する
認証情報プロバイダがアプリとウェブサイトでパスキーとパスワードを共通して使用できるようにするには、次の手順でアプリのデジタル アセット リンク ファイルを作成します。
1. デジタル アセット リンクの JSON ファイルを作成する
次の構造の 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
]
}
}
]
2. デジタル アセット リンクの JSON ファイルをホストする
デジタル アセット リンクの 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 でログイン」)を実装できます。ご利用にあたっては、次のデベロッパー ガイドをご覧ください。
- Credential Manager を使用してパスキーを設定する: 安全で使いやすい認証のための最新のフィッシング対策方法であるパスキーを実装する方法について説明します。
- 認証情報マネージャーで「Google でログイン」を設定する: 「Google でログイン」を統合して、Google アカウントでのユーザー ログインを効率化します。
- 認証情報マネージャーに関する一般的なエラーのトラブルシューティング: 認証情報マネージャーに関する一般的なエラーを解決する方法について説明します。
- Firebase 認証を統合する: ユーザーが Google アカウントを使用して Firebase で認証できるようにします。