Android アプリとウェブサイト間でのシームレスな認証情報の共有を設定します

アプリとウェブサイト間でクロス プラットフォームの認証情報のシームレスな共有を可能にして、ユーザーの利便性を最大化します。複数のウェブサイトと Android アプリがアカウント管理バックエンドを共有している場合、この機能を使用すると、ユーザーは認証情報を 1 回保存するだけで、リンクされたウェブサイトや Android アプリで自動的に提案されるようになります。

認証情報の共有を設定するには、次の 2 つの方法があります。

  • Google Play Console: Android アプリとの認証情報の共有を設定するほとんどのデベロッパーにおすすめです。この方法では、新しいバージョンのアプリをリリースしなくても認証情報の共有を設定できます。Google Play Console を使用している場合でも、有効な assetlinks.json ファイルをウェブサイトに公開する必要があります。
  • Digital Asset Link(DAL): より複雑な構成の複数のアプリやドメインのサポートなど、高度なユースケースに適しています。

ベスト プラクティス

最適なユーザー エクスペリエンスとセキュリティを実現するには、以下のタッチポイントでシームレスな認証情報共有を実装します。

  • ログイン フォーム: 認証情報の自動入力を有効にします。
  • 登録フォーム: 新しい認証情報を安全に保存して、プラットフォーム間で使用できるようにします。
  • パスワード変更フォーム: すべてのプラットフォームでパスワードの更新を同期します。
  • パスワード再設定フォーム: 1 回のパスワード再設定ですべてのプラットフォームを更新できるようにします。
  • WebView ドメイン: 認証情報の共有を、アカウント管理(ホストのログイン、登録、パスワード変更、パスワード再設定フォーム)を処理するアプリ内の WebView ドメインに拡張します。
  • Android アプリ

このアプローチにより、統合された認証情報管理システムが構築され、ユーザーの利便性とセキュリティの両方が強化されます。

アカウント管理ウェブサイトを設計する際は、アカウント管理サイトのベスト プラクティスに従うことをおすすめします。

Android アプリを設計する際は、アプリを Android 認証情報マネージャーと統合することをおすすめします。

Google Play Console を使用して認証情報の共有を設定する

新しいバージョンの Android アプリを公開しなくても、Google Play Console から直接認証情報のシームレスな共有を有効にできるようになりました。この方法では、Google Play Console のインターフェースから認証情報の共有設定を管理できるため、プロセスが簡素化されます。

前提条件

Google Play Console を使用して認証情報の共有を設定する前に、以下をご確認ください。

  • [ディープリンク] セクションと [アプリの設定] セクションにアクセスするために必要な Google Play Console の権限。アカウント所有者でない場合は、適切なアクセス権を付与するよう Google Play Console 管理者に依頼してください。
  • Digital Asset Links(DAL)の構文に従って、各ドメインに /.well-known/assetlinks.json ファイルを公開する機能。

新しいドメインの認証情報の共有を有効にする

新しいドメインで Google Play Console で認証情報のシームレスな共有を設定する手順は次のとおりです。

  1. Google Play Console を開き、[ディープリンク] ページ([ユーザーを増やす > ディープリンク])に移動します。
  2. [アプリの構成] タブで、[ドメインを追加] をクリックします。
  3. ウェブサイトのドメインを入力します。
  4. [認証情報の共有を有効にする] の切り替えボタンをオンにします。
  5. 生成された JSON ファイルをコピーして、指定された場所(プロトコルに従って https://YOUR_DOMAIN/.well-known/assetlinks.json)に公開するか、関連情報を既存の assetlinks.json ファイルに追加します。
  6. [ウェブサイトの関連付けを作成] をクリックします。

成功すると、[ディープリンク] ページに戻ります。

既存のドメインで認証情報の共有を有効にする

既存のドメインで Google Play Console で認証情報のシームレスな共有を設定する手順は次のとおりです。

  1. [アプリの構成] タブを選択します。
  2. [ドメイン] セクションの [アプリの設定] で、[認証情報の共有] 列の [オンにする] をクリックします。
  3. 生成された JSON ファイルをコピーして、指定した場所に公開します(または、関連情報を既存の assetlinks.json ファイルに追加します)。
  4. [認証情報の共有を有効にする] をクリックします。

成功すると、[ディープリンク] ページに戻ります。

Digital Asset Links(DAL)のみを使用して認証情報の共有を設定する

複数のアプリやウェブサイトが関与する複雑な設定の場合は、デジタル アセット リンク(DAL)を使用して認証情報の共有を手動で設定します。

前提条件

認証情報のシームレスな共有を設定するには、各プラットフォームで次のものが揃っていることを確認してください。

Android アプリごとに:

ウェブサイトごとに:

  • Digital Asset Links(DAL)の構文に従って、各ドメインに /.well-known/assetlinks.json ファイルを公開する機能。
  • すべてのアカウント管理ドメイン(ログイン、登録、パスワード変更、パスワード再設定フォーム)には HTTPS 経由でアクセスできる必要があります。

Android アプリとウェブサイト間で認証情報をシームレスに共有できるようになります

アプリとウェブサイト間で認証情報をシームレスに共有するには、認証情報を共有できるエンティティ(ウェブサイトまたは Android アプリ)を宣言する Digital Asset Links ステートメント リストを作成して公開します。

認証情報の共有関係を宣言するには:

  1. DAL ステートメント リストの構文に沿って、ウェブサイトと Android アプリにリンクするステートメントを含む assetlinks.json ファイルを作成します。

    [
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"web",
          "site":URL
        }
      },
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"android_app",
          "package_name":"APP_ID",
          "sha256_cert_fingerprints":[
            "SHA_HEX_VALUE"
          ]
        }
      }
    ]
    

    ここで、URL はサイトの URL、APP_IDAndroid アプリケーション IDSHA_HEX_VALUE は Android アプリの署名証明書の SHA256 フィンガープリントです。

    relation フィールドは、宣言される関係を表します。アプリとサイトがログイン認証情報を共有することを宣言するには、関係を delegate_permission/common.get_login_creds として指定します。詳しくは、DAL のリレーション文字列をご覧ください。

    target フィールドは、宣言が適用されるアセットを指定するオブジェクトです。

    以下のフィールドではウェブサイトを識別します。

    namespace

    web

    site

    https://domain[:optional_port の形式でのウェブサイトの URL(例: https://www.example.com)。

    domain は完全修飾する必要があります。HTTPS にポート 443 を使用する場合は、optional_port を省略する必要があります。

    site のターゲットにはルートドメインのみを指定できます。アプリの関連付けを特定のサブディレクトリに限定することはできません。URL にパス(末尾のスラッシュなど)を含めないでください。

    サブドメインは一致とは見なされません。つまり、domain を www.example.com と指定した場合、ドメイン www.counter.example.com はアプリに関連付けられません。

    以下のフィールドでは Android アプリを識別します。

    namespace

    android_app

    package_name

    アプリのマニフェストで宣言されたパッケージ名。例: com.example.android

    sha256_cert_fingerprints

    アプリの署名証明書の SHA256 フィンガープリント。

  2. デジタル アセット リンクの JSON ファイルを、ログイン ドメインの次の場所でホストします。https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.jsonDOMAIN は完全修飾名です。HTTPS にポート 443 を使用する場合は OPTIONAL_PORT を省略する必要があります)。

  3. Android アプリの res/values/strings.xml ファイルに、ステップ 1 で作成したステートメント リストにリンクするステートメントを埋め込むことで、Android アプリで関連付けを宣言します。読み込む assetlinks.json ファイルを指定するオブジェクトを追加します。次に例を示します。

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

    DOMAINOPTIONAL_PORT(HTTPS にポート 443 を使用する場合は省略する必要があります)を置き換えます(例: https://www.example.com)。文字列で使用するアポストロフィや引用符はエスケープします。

    DAL のドキュメントに記載されているように、strings.xml ファイルに JSON スニペットを追加することもできますが、include ステートメントを使用すると、アプリの新しいバージョンを公開せずにステートメントを変更できます。

  4. マニフェストのステートメントを参照するには、アプリの AndroidManifest.xml ファイルの <application> に次の行を追加します。

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  5. 新しいバージョンの Android アプリを Google Play Console に公開する

上記の手順を完了すると、ウェブサイトと Android アプリとの間で認証情報をシームレスに共有できるようになります。

これは、認証情報共有用の DAL を設定するための唯一の有効な方法ではありませんが、このアプローチでは、シームレスな認証情報共有ネットワークに新しいエンティティを追加するプロセスが簡素化され、コードの再利用が促進され、更新中にエラーが発生する可能性を軽減できます。