Présentation
Le protocole et l'API Digital Asset Links permettent à une application ou à un site Web de publier des instructions publiques et vérifiables concernant d'autres applications ou sites Web. Par exemple, un site Web peut déclarer qu'il est associé à une application Android spécifique ou qu'il souhaite partager les identifiants de l'utilisateur avec un autre site Web.
Voici quelques cas d'utilisation possibles de Digital Asset Links:
- Le site Web A déclare que les liens vers son site doivent s'ouvrir dans une application désignée sur les appareils mobiles, si l'application est installée.
- Le site Web A déclare qu'il peut partager ses identifiants utilisateur Chrome avec le site Web B, afin que l'utilisateur n'ait pas à se connecter au site Web B s'il est connecté au site Web A.
- L'application A déclare qu'elle peut partager des paramètres de l'appareil, tels que la position, avec le site B.
Termes clés
- Compte principal:le compte principal correspond à l'application ou au site Web à l'origine de l'instruction. Dans Digital Asset Links, le principal est toujours l'application ou le site Web qui héberge la liste de relevés.
- Liste d'instructions: les instructions sont contenues dans une liste d'instructions contenant une ou plusieurs instructions. Une liste d'instructions est en texte clair et accessible au public, dans un emplacement contrôlé par le compte principal et difficile à spoofing ou à falsifier. Il peut s'agir d'un fichier autonome ou d'une section d'un autre élément plus volumineux. Par exemple, sur un site Web, il s'agit d'un fichier entier. Dans une application Android, il s'agit d'une section du fichier manifeste de l'application. Les déclarations peuvent être visualisées et vérifiées par n'importe qui, à l'aide de méthodes non propriétaires. Pour en savoir plus, consultez la documentation concernant la liste d'instructions.
- Instruction : une instruction est une construction JSON très structurée qui se compose d'une relation (ce qu'elle indique à faire, par exemple "Activer le partage d'identifiants") et d'une cible (le site Web ou l'application auquel la relation s'applique). Par conséquent, chaque énoncé est semblable à une phrase, où le principal indique relation concernant cible.
- Consommateur d'instructions:un client d'instructions demande une liste d'instructions à un compte principal, vérifie la présence d'une instruction par rapport à un compte principal donné et, si elle existe, peut effectuer l'action spécifiée. Pour en savoir plus, consultez la documentation relative à l'instruction.
Exemple d'utilisation rapide
Voici un exemple très simplifié illustrant comment le site Web www.example.com peut utiliser Digital Asset Links pour indiquer que tous les liens vers des URL de ce site doivent s'ouvrir dans une application désignée plutôt que dans le navigateur:
- Le site Web www.example.com publie une liste de déclarations à l'adresse https://www.example.com/.well-known/assetlinks.json. Il s'agit du nom et de l'emplacement officiels d'une liste de relevés sur un site. Les listes de relevés à un autre emplacement, ou sous un autre nom, ne sont pas valides pour ce site. Dans notre exemple, la liste d'instructions se compose d'une instruction qui accorde à son application Android l'autorisation d'ouvrir des liens sur son site :
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
Une liste d'instructions accepte un tableau d'instructions entre les marques [ ], mais notre exemple de fichier ne contient qu'une seule instruction.sha256_cert_fingerprints
est l'empreinte SHA256 du certificat de signature de votre application. Pour en savoir plus, consultez la documentation Android App Links. - L'application Android répertoriée dans l'instruction ci-dessus comporte un filtre d'intent qui spécifie le schéma, l'hôte et le format de chemin des URL qu'elle souhaite gérer: dans ce cas, https://www.example.com. Le filtre d'intent inclut un attribut spécial
android:autoVerify
, nouveau sur Android M, qui indique qu'Android doit vérifier l'instruction sur le site Web décrit dans le filtre d'intent lorsque l'application est installée. - Un utilisateur installe l'application. Android voit le filtre d'intent avec l'attribut
autoVerify
et vérifie la présence de la liste d'instructions sur le site spécifié. Le cas échéant, Android vérifie si ce fichier inclut une instruction accordant la gestion des liens à l'application et vérifie l'application par rapport à l'instruction par hachage de certificat. Si tout est correct, Android transmet les intents https://www.example.com à l'application example.com. - L'utilisateur clique sur un lien vers https://www.example.com/chiots sur son appareil. Ce lien peut se trouver n'importe où: dans un navigateur, dans une suggestion Google Search Appliance ou ailleurs. Android transmet l'intent à l'application example.com.
- L'application example.com reçoit l'intent et choisit de le gérer, en ouvrant la page des chiots dans l'application. Si, pour une raison quelconque, l'application a refusé de gérer le lien ou si l'application n'était pas installée sur l'appareil, le lien aurait été envoyé au prochain gestionnaire d'intent par défaut correspondant à ce modèle d'intent (souvent le navigateur).
Remarques et limites importantes:
- Le protocole n'authentifie pas le compte principal qui effectue l'instruction, mais l'instruction est située dans un emplacement spécifique fortement associé à ce compte principal et sous son contrôle.
- Le protocole n'authentifie pas la cible de l'instruction, mais il permet à l'appelant d'authentifier la cible (par exemple, une instruction identifie les cibles d'applications mobiles par hachage de certificat et nom de package).
- Le protocole n'exécute aucune action d'instruction de manière native. Il permet plutôt d'exposer les instructions, qu'une application consommatrice doit valider avant de décider si elle doit agir et comment. Android M effectue ces étapes de manière native pour vous. Par exemple, si un site Web délègue la gestion des liens à une application spécifique, Android vérifie et valide l'instruction, valide l'application cible, puis propose à l'application de gérer le lien donné.
- Le protocole ne permet pas de faire des déclarations concernant deux tiers: en d'autres termes, le site Web A peut faire une déclaration concernant le site Web B, mais le site Web A ne peut pas faire de déclaration concernant la relation entre le site Web B et le site C. Toutefois, si le site Web B fait confiance au site Web A, il peut vérifier si le site Web A contient une déclaration accordant l'autorisation au site C et décider de mettre en œuvre cette autorisation.