Überblick
Mit dem Digital Asset Links-Protokoll und der Digital Asset Links API kann eine App oder Website öffentliche, überprüfbare Aussagen zu anderen Apps oder Websites machen. Für eine Website kann beispielsweise deklariert werden, dass sie mit einer bestimmten Android-App verknüpft ist, oder dass Nutzeranmeldedaten für eine andere Website freigegeben werden sollen.
Digital Asset Links können beispielsweise für folgende Zwecke eingesetzt werden:
- Für Website A wird deklariert, dass Links zu der zugehörigen Website auf Mobilgeräten in einer dafür vorgesehenen App geöffnet werden müssen, wenn die App installiert ist.
- Website A erklärt, dass sie ihre Chrome-Nutzeranmeldedaten an Website B weitergeben kann, damit sich der Nutzer nicht bei Website B anmelden muss, wenn er auf Website A angemeldet ist.
- App A deklariert, dass sie Geräteeinstellungen wie den Standort mit Website B teilen kann.
Wichtige Begriffe
- Hauptkonto: Das Hauptkonto ist die App oder Website, die die Aussage äußert. Bei Digital Asset Links ist das Hauptkonto immer die App oder Website, in der die Liste der Kontoauszüge gehostet wird.
- Anweisungsliste: Anweisungen sind in einer Anweisungsliste enthalten, die eine oder mehrere Anweisungen enthält. Eine Anweisungsliste ist im Klartext und öffentlich zugänglich. Sie befindet sich an einem Ort, der vom Hauptkonto kontrolliert wird und schwer zu fälschen oder zu manipulieren ist. Dabei kann es sich um eine frei stehende Datei oder um Abschnitte eines anderen, größeren Artikels handeln. Auf einer Website ist es zum Beispiel eine ganze Datei, in einer Android-App ein Abschnitt im App-Manifest. Die Kontoauszüge können von jedem auf unzulässige Weise angesehen und bestätigt werden. Weitere Informationen finden Sie in der Dokumentation zur Liste der Anweisungen.
- Anweisung : Eine Anweisung ist ein eng strukturiertes JSON-Konstrukt, das aus einer relation (die in der Anweisung vorgesehenen Aktionen, z. B. „Freigabe von Anmeldedaten aktivieren“) und einem relation (die Website oder App, auf die sich die Beziehung bezieht) besteht. Daher ist jede Anweisung wie ein Satz, in dem principal (Prinzipal) relation über target angibt.
- Anweisungsnutzer:Ein Anweisungsnutzer fordert eine Anweisungsliste von einem Hauptkonto an, prüft bei einem bestimmten Hauptkonto, ob eine Anweisung vorhanden ist, und kann die angegebene Aktion ausführen, sofern vorhanden. Weitere Informationen finden Sie in der Dokumentation.
Beispiel für eine schnelle Verwendung
Hier ein sehr vereinfachtes Beispiel dafür, wie Digital Asset Links für die Website www.beispiel.de verwendet werden können, um anzugeben, dass alle Links zu URLs auf dieser Website in einer dafür vorgesehenen App und nicht im Browser geöffnet werden sollen:
- Auf der Website www.beispiel.de wird unter https://www.beispiel.de/.well-known/assetlinks.json eine Anweisungsliste veröffentlicht. Dies ist der offizielle Name und die Stelle für eine Anweisungsliste auf einer Website. Anweisungslisten an einem anderen Ort oder unter einem anderen Namen sind für diese Website nicht gültig. In unserem Beispiel besteht die Anweisungsliste aus einer Anweisung, mit der der Android-App die Berechtigung erteilt wird, Links auf der zugehörigen Website zu öffnen:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
Eine Anweisungsliste unterstützt ein Array von Anweisungen innerhalb der Zeichen [ ]. Unsere Beispieldatei enthält jedoch nur eine Anweisung.sha256_cert_fingerprints
ist der SHA256-Fingerabdruck des Signaturzertifikats Ihrer App. Weitere Informationen finden Sie in der Dokumentation zu Android-App-Links. - Die in der obigen Anweisung aufgeführte Android-App hat einen Intent-Filter, der das Schema, den Host und das Pfadmuster der URLs angibt, die verarbeitet werden sollen: in diesem Fall https://www.beispiel.de. Der Intent-Filter enthält das spezielle Attribut
android:autoVerify
, das neu für Android M ist. Es gibt an, dass Android die Anweisung auf der im Intent-Filter beschriebenen Website überprüfen soll, wenn die App installiert wird. - Ein Nutzer installiert die Anwendung. Android sieht den Intent-Filter mit dem Attribut
autoVerify
und prüft, ob die Anweisungsliste auf der angegebenen Website vorhanden ist. Falls vorhanden, prüft Android, ob die Datei eine Anweisung enthält, die eine Linkverarbeitung für die Anwendung gewährt, und überprüft die Anwendung anhand der Anweisung anhand eines Zertifikats-Hashs. Wenn alles in Ordnung ist, leitet Android alle https://www.example.com Intents an die example.com-App weiter. - Der Nutzer klickt auf seinem Gerät auf einen Link zu https://www.example.com/welpen. Dieser Link kann sich an einer beliebigen Stelle befinden: in einem Browser, in einem Vorschlag der Google Search Appliance oder an einem anderen Ort. Android leitet den Intent an die Anwendung „example.com“ weiter.
- Die App „example.com“ empfängt den Intent und versucht, ihn zu verarbeiten. Dabei wird die Seite „Welpen“ in der App geöffnet. Wenn die App die Verarbeitung des Links abgelehnt hat oder die App nicht auf dem Gerät installiert war, wurde der Link an den nächsten Standard-Intent-Handler gesendet, der diesem Intent-Muster (häufig dem Browser) entspricht.
Wichtige Hinweise und Einschränkungen:
- Das Protokoll authentifiziert das Hauptkonto, das die Anweisung tätigt, nicht, aber die Anweisung befindet sich an einem bestimmten Ort, der eng mit dem Hauptkonto verbunden ist und unter der Kontrolle des Hauptkontos steht.
- Das Protokoll authentifiziert das Anweisungsziel nicht, aber es ermöglicht dem Aufrufer, das Ziel zu authentifizieren. Eine Anweisung identifiziert beispielsweise Ziele mobiler Apps anhand des Zertifikats-Hashs und des Paketnamens.
- Das Protokoll führt nativ keine Anweisungsaktionen aus. Es ermöglicht vielmehr die Offenlegung von Anweisungen, die eine verarbeitende Anwendung validieren und dann entscheiden muss, ob und wie damit zu handeln. Android M führt diese Schritte nativ für Sie aus. Wenn eine Website beispielsweise die Linkverarbeitung an eine bestimmte App delegiert, prüft und verifiziert Android die Anweisung, verifiziert die Ziel-App und bietet der App dann die Option, den angegebenen Link zu verarbeiten.
- Das Protokoll ermöglicht keine Aussagen über zwei Dritte. Das heißt, Website A kann keine Aussagen über Website B treffen, Website A jedoch keine Aussagen über die Beziehung von Website B zu Website C. Wenn Website B jedoch Website A vertraut, kann sie für Website A nach einer Erklärung suchen, die die Berechtigung für Website C erteilt, und dann entscheiden, diese zu implementieren.