Ringkasan
Protokol dan API Digital Asset Links memungkinkan aplikasi atau situs membuat pernyataan publik yang dapat diverifikasi tentang aplikasi atau situs lain. Misalnya, situs dapat mendeklarasikan bahwa situs tersebut terkait dengan aplikasi Android tertentu, atau dapat mendeklarasikan bahwa situs tersebut ingin membagikan kredensial pengguna dengan situs lain.
Berikut ini beberapa kemungkinan penggunaan Digital Asset Links:
- Situs A mendeklarasikan bahwa link ke situsnya harus terbuka di aplikasi yang ditetapkan di perangkat seluler, jika aplikasi telah diinstal.
- Situs A mendeklarasikan bahwa situs tersebut dapat membagikan kredensial pengguna Chrome-nya dengan situs B sehingga pengguna tidak perlu login ke situs B jika login ke situs A.
- Aplikasi A mendeklarasikan bahwa aplikasi dapat membagikan setelan perangkat, seperti lokasi, ke situs B.
Istilah utama
- Principal: Principal adalah aplikasi atau situs yang membuat pernyataan. Di Digital Asset Links, akun utama selalu merupakan aplikasi atau situs yang menghosting daftar pernyataan.
- Daftar pernyataan: Pernyataan terdapat dalam daftar pernyataan yang berisi satu atau beberapa pernyataan. Daftar pernyataan bersifat cleartext dan dapat diakses oleh publik, di lokasi yang dikontrol oleh akun utama dan sulit untuk dipalsukan atau diubah. Item ini dapat berupa file yang berdiri sendiri, atau bagian dari item lain yang lebih besar. Misalnya, pada situs web, itu adalah file secara keseluruhan; dalam aplikasi Android, itu adalah bagian dalam manifes aplikasi. Pernyataan dapat dilihat dan diverifikasi oleh siapa saja, menggunakan metode non-eksklusif. Lihat dokumentasi daftar pernyataan untuk informasi selengkapnya.
- Pernyataan: Pernyataan adalah konstruksi JSON yang terstruktur ketat yang terdiri dari relation (apa yang dinyatakan oleh pernyataan tersebut, misalnya: Mengaktifkan kredensial berbagi) dan relation (situs atau aplikasi tempat relasi tersebut berlaku). Oleh karena itu, tiap pernyataan seperti kalimat, yang mana principal menyatakan relation tentang target.
- Konsumen pernyataan: Konsumen pernyataan meminta daftar pernyataan dari akun utama, memeriksa keberadaan pernyataan terhadap akun utama tertentu, dan jika ada, dapat melakukan tindakan yang ditentukan. Lihat dokumentasi pernyataan ringkasan untuk informasi selengkapnya.
Contoh penggunaan cepat
Berikut adalah contoh yang sangat sederhana tentang cara situs www.example.com dapat menggunakan Digital Asset Links untuk menentukan bahwa setiap link ke URL di situs tersebut harus terbuka di aplikasi yang ditetapkan, bukan di browser:
- Situs www.example.com memublikasikan daftar pernyataan di
https://www.example.com/.well-known/assetlinks.json. Ini adalah nama
resmi dan lokasi untuk daftar laporan di situs; daftar pernyataan di
lokasi lain mana pun, atau dengan nama lainnya, tidak valid untuk situs ini. Dalam
contoh ini, daftar pernyataan terdiri dari satu pernyataan, yang memberi
aplikasi Android-nya izin untuk membuka link di situsnya:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
Daftar pernyataan mendukung array pernyataan dalam tanda [ ], tetapi file contoh hanya berisi satu pernyataan.sha256_cert_fingerprints
adalah sidik jari SHA256 dari sertifikat penandatanganan aplikasi Anda. Temukan detail selengkapnya di dokumentasi Link Aplikasi Android. - Aplikasi Android yang tercantum dalam pernyataan di atas memiliki filter intent
yang menentukan skema, host, dan pola jalur URL yang ingin
ditangani: dalam hal ini, https://www.example.com. Filter intent
menyertakan atribut khusus
android:autoVerify
, baru untuk Android M, yang menunjukkan bahwa Android harus memverifikasi pernyataan di situs yang dijelaskan dalam filter intent saat aplikasi diinstal. - Pengguna menginstal aplikasi. Android akan melihat filter intent dengan
atribut
autoVerify
dan memeriksa keberadaan daftar pernyataan di situs yang ditentukan; jika ada, Android akan memeriksa apakah file tersebut menyertakan pernyataan yang memberikan penanganan link ke aplikasi, dan memverifikasi aplikasi berdasarkan pernyataan tersebut dengan hash sertifikat. Jika semuanya cocok, Android kemudian akan meneruskan intent https://www.example.com ke aplikasi example.com. - Pengguna mengklik link ke https://www.example.com/pupids di perangkatnya. Link ini dapat berada di mana saja: di browser, di saran Google Search Appliance, atau di mana saja. Android akan meneruskan intent ke aplikasi example.com.
- Aplikasi example.com menerima intent dan memilih untuk menanganinya, membuka halaman anak-anak di aplikasi. Jika karena alasan tertentu aplikasi menolak menangani link, atau jika aplikasi tidak ada di perangkat, link akan dikirim ke pengendali intent default berikutnya yang cocok dengan pola intent tersebut (sering kali browser).
Pertimbangan dan batasan penting:
- Protokol ini tidak mengautentikasi akun utama yang membuat pernyataan, tetapi pernyataan tersebut berada di lokasi tertentu yang sangat terkait dengan akun utama, dan di bawah kontrol akun utama.
- Protokol ini tidak mengautentikasi target pernyataan, tetapi menyediakan cara bagi pemanggil untuk mengautentikasi target (misalnya, pernyataan mengidentifikasi target aplikasi seluler berdasarkan hash sertifikat dan nama paket).
- Protokol ini tidak secara native menjalankan tindakan pernyataan apa pun; sebaliknya, protokol mengaktifkan kemampuan mengekspos pernyataan, yang harus divalidasi oleh aplikasi yang menggunakannya, lalu memutuskan apakah akan ditindaklanjuti atau tidak. Android M secara native melakukan langkah-langkah ini untuk Anda; misalnya, jika situs mendelegasikan penanganan link ke aplikasi tertentu, Android akan memeriksa dan memverifikasi pernyataan, memverifikasi aplikasi target, lalu menawarkan opsi untuk menangani link yang diberikan kepada aplikasi.
- Protokol tersebut tidak memungkinkan pembuatan pernyataan tentang dua pihak ketiga: yaitu, situs A dapat membuat pernyataan tentang situs B, tetapi situs A tidak dapat membuat pernyataan tentang hubungan situs B dengan situs C. Namun, jika situs B memercayai situs A, situs B dapat memeriksa situs A untuk mencari pernyataan yang memberikan izin ke situs C, dan memutuskan untuk menerapkannya.