總覽
應用程式或網站可透過 Digital Asset Links 通訊協定和 API,公開發布有關其他應用程式或網站的可驗證陳述式。舉例來說,網站可以聲明與特定 Android 應用程式相關聯,也可以聲明要與其他網站共用使用者憑證。
Digital Asset Links 的可能用途包括:
- 網站 A 聲明,如果行動裝置上安裝了指定應用程式,則連往該網站的連結應在該應用程式中開啟。
- 網站 A 聲明可與網站 B 共用 Chrome 使用者憑證,這樣使用者登入網站 A 後,就不必登入網站 B。
- 應用程式 A 聲明可與網站 B 分享裝置設定,例如位置資訊。
重要詞彙
- 主體:主體是指聲明所指的應用程式或網站。在 Digital Asset Links 中,主體一律是代管陳述清單的應用程式或網站。
- 陳述式清單:陳述式包含在陳述式清單中,其中包含一或多個陳述式。聲明清單是明文,可公開存取,且位於主體控管的位置,難以偽造或竄改。可以是獨立檔案,也可以是其他較大項目的其中一部分。舉例來說,在網站上,這是整個檔案;在 Android 應用程式中,這是應用程式資訊清單中的一個區段。 任何人都能使用非專有方法查看及驗證聲明。詳情請參閱陳述式清單說明文件。
- 陳述: 陳述是嚴格結構化的 JSON 建構,包含關係 (陳述要執行的動作,例如:啟用憑證共用) 和目標 (關係適用的網站或應用程式)。因此,每個陳述式都像是一個句子,其中「主體」會說明「目標」的「關係」。
- 陳述式消費者:陳述式消費者會向主體要求陳述式清單,檢查特定主體是否有陳述式,如果有的話,可以執行指定的動作。詳情請參閱陳述式消耗量說明文件。
快速使用範例
以下是經過大幅簡化的例子,說明網站 www.example.com 如何使用 Digital Asset Links 指定該網站中任何網址的連結,都應在指定應用程式中開啟,而非瀏覽器:
- 網站 www.example.com 在 https://www.example.com/.well-known/assetlinks.json 發布聲明清單。這是網站上聲明清單的官方名稱和位置;其他位置或名稱的聲明清單不適用於這個網站。在我們的範例中,陳述清單包含一個陳述,授予 Android 應用程式在網站上開啟連結的權限:
陳述式清單支援 [ ] 標記內的陳述式陣列,但我們的範例檔案只包含一個陳述式。[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
sha256_cert_fingerprints
是應用程式簽署憑證的 SHA256 指紋。 詳情請參閱 Android 應用程式連結說明文件。 - 上述聲明中列出的 Android 應用程式具有意圖篩選器,可指定要處理的網址架構、主機和路徑模式,在本例中為 https://www.example.com。意圖篩選器包含 Android M 新增的特殊屬性
android:autoVerify
,指出 Android 應在安裝應用程式時,驗證意圖篩選器中描述的網站聲明。 - 使用者安裝應用程式。Android 會看到具有
autoVerify
屬性的意圖篩選器,並檢查指定網站是否有陳述清單;如有,Android 會檢查該檔案是否包含授予應用程式連結處理權的陳述,並根據憑證雜湊值驗證應用程式是否符合陳述。如果一切正常,Android 就會將所有 https://www.example.com 意圖轉送至 example.com 應用程式。 - 使用者在裝置上點選 https://www.example.com/puppies 的連結。這個連結可能位於任何地方,例如瀏覽器、Google 搜尋設備建議或其他位置。Android 會將意圖轉送至 example.com 應用程式。
- example.com 應用程式會收到意圖並選擇處理,在應用程式中開啟小狗頁面。如果應用程式因故拒絕處理連結,或裝置上沒有該應用程式,連結就會傳送至符合該意圖模式的下一個預設意圖處理常式 (通常是瀏覽器)。
重要注意事項和限制:
- 通訊協定不會驗證聲明主體,但聲明位於與主體密切相關且由主體控管的特定位置。
- 通訊協定不會驗證陳述式目標,但會提供呼叫端驗證目標的方法 (例如,陳述式會依憑證雜湊和套件名稱識別行動應用程式目標)。
- 通訊協定本身不會執行任何陳述動作,而是提供公開陳述內容的功能,供使用應用程式驗證,然後決定是否要採取行動及採取何種行動。Android M 會自動執行這些步驟; 舉例來說,如果網站將連結處理作業委派給特定應用程式, Android 會檢查並驗證陳述式、驗證目標應用程式, 然後提供應用程式處理指定連結的選項。
- 這項通訊協定無法對兩個第三方做出聲明,也就是說,網站 A 可以對網站 B 做出聲明,但網站 A 無法對網站 B 與網站 C 的關係做出聲明。不過,如果網站 B 信任網站 A,可以檢查網站 A 是否有授權給網站 C 的聲明,並決定是否要實作該聲明。