Per iniziare

Panoramica

L'API e il protocollo Digital Asset Links consentono a un'app o a un sito web di rendere Dichiarazioni pubbliche e verificabili relative ad altre app o altri siti web. Ad esempio, un sito web può dichiarare di essere associato a una specifica app per Android o può dichiarare che vuole condividere le credenziali utente con un altro sito web.

Di seguito sono riportati alcuni possibili utilizzi di Digital Asset Links:

  • Il sito web A dichiara che i link al suo sito dovrebbero aprirsi in un'apposita app sui dispositivi mobili, se l'app è installata.
  • Il sito web A dichiara di poter condividere le proprie credenziali utente di Chrome con il sito web B, in modo che l'utente non debba accedere al sito web B se ha eseguito l'accesso al sito web A.
  • L'app A dichiara di poter condividere le impostazioni del dispositivo, ad esempio la posizione, con il sito web B.

Termini chiave

  • Entità:l'entità è l'app o il sito web che effettua la dichiarazione. In Digital Asset Links, l'entità è sempre l'app o il sito web che ospita l'elenco degli estratti conto.
  • Elenco di istruzioni: le istruzioni sono contenute in un elenco di istruzioni che contiene una o più istruzioni. Un elenco di dichiarazioni è in testo chiaro e accessibile pubblicamente, in una posizione controllata dall'entità e difficile da spoofing o manomissione. Può essere un file autonomo o una sezione di un altro elemento di dimensioni maggiori. Ad esempio, su un sito web si tratta di un intero file; in un'app per Android, si tratta di una sezione nel file manifest dell'app. Le dichiarazioni possono essere visualizzate e verificate da chiunque, utilizzando metodi non proprietari. Per ulteriori informazioni, consulta la documentazione relativa all'elenco degli estratti conto.
  • Dichiarazione: un'istruzione è un costrutto JSON strettamente strutturato, composto da una relation (quello che l'istruzione dice di fare, ad esempio Abilita la condivisione delle credenziali) e un relation (il sito web o l'app a cui si applica la relazione). Pertanto, ogni affermazione è come una frase, in cui principal indica relation su target.
  • Consumatore di istruzioni: un consumer di istruzioni richiede un elenco di istruzioni a un'entità, verifica la presenza di un'istruzione rispetto a una determinata entità e, se esiste, può eseguire l'azione specificata. Per ulteriori informazioni, consulta l'istruzione di compilazione della documentazione.

Esempio di utilizzo rapido

Ecco un esempio molto semplificato di come il sito web www.example.com potrebbe utilizzare Digital Asset Links per specificare che tutti i link agli URL del sito devono aprirsi in un'app designata anziché nel browser:

  1. Il sito web www.example.com pubblica un elenco di dichiarazioni all'indirizzo https://www.example.com/.well-known/assetlinks.json. Questi sono il nome e la posizione ufficiali di un elenco di estratti conto su un sito; gli elenchi di istruzioni, in qualsiasi altra posizione o con qualsiasi altro nome, non sono validi per questo sito. Nel nostro esempio, l'elenco di istruzioni è composto da un'istruzione, che concede alla relativa app per Android l'autorizzazione ad aprire i link sul relativo sito:
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    Un elenco di istruzioni supporta un array di istruzioni all'interno dei segni [ ], ma il nostro file di esempio contiene una sola istruzione. sha256_cert_fingerprints sono le fingerprint SHA256 del certificato di firma della tua app. Puoi trovare maggiori dettagli nella documentazione relativa ai link per app Android.
  2. L'app per Android elencata nell'istruzione precedente ha un filtro per intent che specifica lo schema, l'host e il pattern del percorso degli URL che vuole gestire: in questo caso, https://www.example.com. Il filtro per intent include un attributo speciale android:autoVerify, nuovo per Android M, che indica che Android deve verificare l'istruzione sul sito web descritto nel filtro per intent quando l'app viene installata.
  3. Un utente installa l'app. Android vede il filtro per intent con l'attributo autoVerify e verifica la presenza dell'elenco delle istruzioni sul sito specificato; se presente, Android controlla se il file include un'istruzione che concede la gestione dei link all'app e verifica l'app in base all'istruzione tramite hash del certificato. Se la verifica ha esito positivo, Android inoltrerà tutti gli intent https://www.example.com all'app example.com.
  4. L'utente fa clic su un link che rimanda a https://www.example.com/puppies sul suo dispositivo. Il link può essere ovunque: in un browser, in un suggerimento di Google Search Appliance o altrove. Android inoltra l'intent all'app example.com.
  5. L'app example.com riceve l'intent e sceglie di gestirlo aprendo la pagina dei cuccioli nell'app. Se per qualche motivo l'app non era riuscita a gestire il link o se non fosse presente sul dispositivo, il link sarebbe stato inviato al successivo gestore di intent predefinito corrispondente a quel pattern di intent (spesso il browser).

Considerazioni importanti e limitazioni:

  • Il protocollo non autentica l'entità che effettua l'istruzione, ma l'istruzione si trova in una località specifica fortemente associata all'entità e sotto il controllo dell'entità.
  • Il protocollo non autentica la destinazione dell'istruzione, ma fornisce al chiamante un mezzo per autenticare il target (ad esempio, un'istruzione identifica i target delle app mobile tramite hash del certificato e nome del pacchetto).
  • Il protocollo non esegue in modo nativo alcuna azione delle istruzioni, ma consente di esporre le istruzioni, che un'applicazione che utilizza deve convalidare e poi decidere se e come agire. Android M esegue in modo nativo questi passaggi per te. Ad esempio, se un sito web delega la gestione dei link a un'app specifica, Android controlla e verifica l'affermazione, verifica l'app di destinazione, quindi offre all'app la possibilità di gestire il link in questione.
  • Il protocollo non consente di fare affermazioni su due terze parti, ovvero il sito web A può fare una dichiarazione sul sito web B, ma il sito web A non può fare una dichiarazione sulla relazione del sito web B con il sito web C. Tuttavia, se il sito web B considera attendibile il sito web A, può controllare se sul sito web A è presente una dichiarazione che concede l'autorizzazione al sito web C e decidere di implementarla.

Passaggi successivi

  1. Verifica se esiste una documentazione esplicita per il tuo caso d'uso.
  2. Scopri di più sulla creazione di un'istruzione.