スタートガイド

概要

Digital Asset Links プロトコルと API により、アプリやウェブサイトは、他のアプリまたはウェブサイトに関する公開検証可能なステートメントを作成できます。たとえば、ウェブサイトが特定の Android アプリに関連付けられていることを宣言したり、ユーザー認証情報を別のウェブサイトと共有することを宣言したりできます。

デジタル アセット リンクの用途としては、次のようなものがあります。

  • ウェブサイト A では、アプリをインストールしていれば、そのリンクをモバイル デバイスの指定されたアプリで開く必要があると宣言しています。
  • ウェブサイト A では、Chrome ユーザーの認証情報をウェブサイト B と共有できることを宣言しています。これにより、ユーザーがウェブサイト A にログインしていても、ウェブサイト B にログインする必要はありません。
  • アプリ A は、位置情報などのデバイス設定をウェブサイト B と共有できることを宣言します。

主な用語

  • プリンシパル: プリンシパルはアプリまたはウェブサイト ステートメントを作成します。デジタル アセット リンクでは、プリンシパルは常にステートメント リストをホストするアプリまたはウェブサイトになります。
  • ステートメント リスト: ステートメントは、1 つ以上のステートメントを含むステートメント リストに含まれます。ステートメント リストは、プリンシパルによって制御され、なりすましや改ざんが困難な場所で、クリアテキストで一般公開されます。このデータは、自立型のファイルでも、別の大きなアイテムの一部でもかまいません。たとえば、ウェブサイトではファイル全体、Android アプリではアプリ マニフェストのセクションになります。明細書は、Google 独自の方法により誰でも表示および検証できます。詳細については、ステートメント リストのドキュメントをご覧ください。
  • ステートメント: ステートメントは、「関係」(例: 「認証情報の共有を有効にする」など)と「ターゲット」(その関係が適用されるウェブサイトまたはアプリ)で構成される、緊密に構造化された JSON 構成です。したがって、各ステートメントは文のようになり、プリンシパルはターゲットに関する関係を表します。
  • ステートメント コンシューマ: ステートメント コンシューマは、プリンシパルにステートメント リストを要求し、特定のプリンシパルに対してステートメントの存在を確認します。存在する場合、指定されたアクションを実行できます。詳しくは、ステートメントでドキュメントをご覧ください

簡単な使用例

以下に、ウェブサイトの www.example.com が Digital Asset Links を使用して、そのサイトの URL へのリンクがブラウザではなく指定されたアプリで開くように指定する、非常に簡単な例を示します。

  1. ウェブサイト www.example.com は、ステートメント リスト(https://www.example.com/.well-known/assetlinks.json)を公開しています。これは、サイト上の明細書リストの正式名と場所です。他の場所の名前または他の名前の明細書リストは、このサイトでは無効です。この例のステートメント リストは 1 つのステートメントで構成され、その Android アプリにサイトのリンクを開く権限を付与します(
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    )。ステートメント リストは [ ] マーク内のステートメントの配列をサポートしますが、サンプル ファイルにはステートメントが 1 つしか含まれていません。sha256_cert_fingerprints は、アプリの署名証明書の SHA256 フィンガープリントです。詳しくは、Android アプリリンクのドキュメントをご覧ください。
  2. 上記のステートメントにリストされている Android アプリには、処理する URL のスキーム、ホスト、パスパターンを指定するインテント フィルタ(この場合は https://www.example.com)があります。これは、Android M に特有の特殊な属性 android:autoVerify であり、アプリがインストールされた場合にインテント フィルタで説明されているウェブサイト上のステートメントを検証するためのものです。
  3. ユーザーがアプリをインストールすると、Android は autoVerify 属性を持つインテント フィルタを確認し、指定されたサイトにステートメント リストが存在するかどうかを確認します。存在する場合、Android は、そのファイルにアプリへのリンクを処理するステートメントが含まれているかどうかを確認し、証明書ハッシュによってステートメントとアプリを確認します。購入手続きが完了すると、Android はすべての https://www.example.com インテントを example.com アプリに転送します。
  4. ユーザーがデバイスで https://www.example.com/puppies へのリンクをクリックします。このリンクはブラウザや Google アプライアンスなど、任意の場所に表示できます。Android は、インテントを example.com アプリに転送します。
  5. example.com アプリはインテントを受信して処理し、子犬のページを開くことを選択します。なんらかの理由でアプリがリンクの処理を拒否した場合、またはアプリがデバイスにない場合、そのインテント パターン(多くの場合ブラウザ)に一致する次のデフォルト インテント ハンドラにリンクが送信されます。

重要な考慮事項と制限事項:

  • プロトコルはステートメントを作成するプリンシパルを認証しませんが、ステートメントはプリンシパルに強く関連付けられた特定の場所に配置され、プリンシパルの管理下にあります。
  • プロトコルはステートメント ターゲットを認証しませんが、呼び出し元がターゲットを認証するための手段を提供します(たとえば、ステートメントは証明書のハッシュとパッケージ名でモバイルアプリ ターゲットを識別します)。
  • プロトコルは、ステートメントのアクションをネイティブに実行しません。むしろ、ステートメントを公開する機能を有効にします。これは、消費元のアプリケーションが検証し、それに基づいてどのように対処するかを決定する必要があります。この手順は Android M によって自動的にネイティブに実行されます。たとえば、ウェブサイトがリンク処理を特定のアプリに委任する場合、Android はステートメントをチェックして検証し、ターゲット アプリを検証してから、指定されたリンクを処理するオプションをアプリに示します。
  • このプロトコルでは、2 つのサードパーティに関するステートメントを作成できません。つまり、ウェブサイト A ではウェブサイト B に関するステートメントを記述できますが、ウェブサイト A はウェブサイト B とウェブサイト C との関係について述べることはできません。ただし、ウェブサイト B がウェブサイト A を信頼している場合、ウェブサイト A がウェブサイト C に許可を与えるステートメントを確認し、実装することを決定できます。

次のステップ

  1. ユースケースに関する明確なドキュメントがあるかどうかを確認します。
  2. ステートメントの作成方法を学習する。