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

クロス プラットフォームでのシームレスな認証情報共有を可能にすることで、ユーザーの利便性を最大限に高める アプリとウェブサイト全体にわたり複数のウェブサイトと Android アプリで同じ 認証情報を保存し、必要に応じて認証情報を リンクされたウェブサイトや Android アプリで自動的に候補として提示することもできます。

ベスト プラクティス

最適なユーザー エクスペリエンスとセキュリティのために、シームレスな認証情報の共有を実装する 次のタッチポイントで活用できます

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

このアプローチにより、統合された認証情報管理システムが構築され、 セキュリティを確保できます。

アカウント管理用のウェブサイトをデザインする際は、 アカウント管理サイトのベスト プラクティス:

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

前提条件

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

Android アプリごとに次の操作を行います。

各ウェブサイトについて:

  • それぞれに対して /.well-known/assetlinks.json ファイルを公開できる Digital Asset Links(DAL)構文に従って、ドメインの所有権を証明します。
  • すべてのアカウント管理ドメイン(ログイン、登録、パスワードの変更、パスワード) HTTPS 経由でアクセスできる必要があります。
で確認できます。

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

アプリやウェブサイト間でのシームレスな認証情報の共有を設定するには、 デジタル アセット リンクのステートメント リストを公開し、 エンティティ(ウェブサイトまたは Android アプリ)が認証情報を共有することを許可されている。

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

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

    [
      {
        "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 アプリケーション ID です。 SHA_HEX_VALUE は、SHA256 フィンガープリントです。 Android アプリの署名証明書

    relation フィールドには、宣言する関係を記述します。宣言する アプリやサイトがログイン認証情報を共有することを許可する場合は、 delegate_permission/common.get_login_creds。詳細: DAL のリレーション文字列

    target フィールドは、宣言のアセットを指定するオブジェクトです。 選択します

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

    namespace

    web

    site

    ウェブサイトの URL(https://domain[:optional_port] の形式)。(例: 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 は完全修飾名、 ポート 443 を使用する場合は、OPTIONAL_PORT を省略する必要があります。 提供します。

  3. Android アプリで関連付けを宣言するには、 ステートメント リストにリンクされている Android アプリの res/values/strings.xml ファイル ステップ 1 で作成したファイルを使用します。assetlinks.json ファイルを指定するオブジェクトを追加して、 負荷を軽減できます。例:

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

    DOMAIN を置き換え、 OPTIONAL_PORT(ポートを使用する場合は省略する必要があります) 443)を指定します(例: https://www.example.com)。アポストロフィはエスケープしてください 引用符で囲む必要があります

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

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

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

これらの手順を完了すると、シームレスな認証情報が正常に設定されます ウェブサイトと Android アプリ間で共有する方法。

これは、認証情報の共有用に DAL を設定する唯一の有効な方法ではありません。 この方法を使用すると、以降の新しいエンティティを シームレスな認証情報共有ネットワークを実現し、コードの再利用性を高め、 更新中のエラーの可能性が高まります。