Omówienie
Protokół Digital Asset Links i interfejs API umożliwiają aplikacji lub witrynie publikowanie publicznych i możliwych do zweryfikowania twierdzeń dotyczących innych aplikacji lub witryn. Na przykład witryna może zadeklarować, że jest powiązana z konkretną aplikacją na Androida lub że chce udostępnić dane logowania użytkownikowi w innej witrynie.
Oto kilka zastosowań logo Digital Asset Links:
- Witryna A deklaruje, że linki do witryny powinny otwierać się w określonej aplikacji na urządzeniu mobilnym, jeśli jest ona zainstalowana.
- Witryna A deklaruje, że może udostępniać swoje dane logowania do Chrome witryny B, aby użytkownik nie musiał logować się na stronie B, jeśli jest zalogowany na stronie A.
- Aplikacja A deklaruje, że może udostępniać stronie B ustawienia urządzenia, takie jak lokalizacja.
Kluczowe terminy
- Podmiot zabezpieczeń: podmiot zabezpieczeń to aplikacja lub strona internetowa tworząca oświadczenie. W Digital Asset Links podmiotem zabezpieczeń jest zawsze aplikacja lub strona hostująca listę wyciągów.
- Lista wyciągów: wyciągi znajdują się na liście wyciągów, która zawiera co najmniej 1 wyciąg. Lista wyciągu to jawny tekst i publicznie dostępny w miejscu kontrolowanym przez podmiot zabezpieczeń, którego trudno użyć do podszywania się pod kogoś innego. Może to być plik wolnostojący lub sekcja innego, większego elementu. Na przykład w witrynie jest to cały plik, a w przypadku aplikacji na Androida jest to sekcja w manifeście aplikacji. Wyciągi mogą wyświetlać i weryfikować każdy, korzystając z niezastrzeżonych metod. Więcej informacji znajdziesz w dokumentacji listy wyciągu
- Wyciąg: instrukcja to ściśle skonstruowana konstrukcja JSON, która składa się z relacji (zgodnie z opisem, np. jak włączyć udostępnianie danych logowania) oraz celu (strony internetowej lub aplikacji, której dotyczy relacja). Każde zdanie jest więc jak zdanie, gdzie podmiot zabezpieczeń to relacja o celu.
- Konsument korzystający z wyciągu: klient, który chce uzyskać wyciąg, poprosi o jego listę, a także o sprawdzenie, czy podmiot ten istnieje. Aby dowiedzieć się więcej, zapoznaj się z dokumentacją na temat przetwarzania danych.
Przykład szybkiego użycia
Oto bardzo uproszczony przykład tego, jak witryna www.example.com może wykorzystywać linki do zasobów cyfrowych, by wskazać, że wszystkie linki do adresów URL w danej witrynie powinny otwierać się w określonej aplikacji, a nie w przeglądarce:
- Witryna www.example.com publikuje listę instrukcji pod adresem https://www.example.com/.well-known/assetlinks.json. Jest to oficjalna nazwa i lokalizacja na liście wyciągów w witrynie. Listy z innych lokalizacji lub z żadną inną nazwą nie są poprawne w przypadku tej witryny. W naszym przykładzie lista instrukcji składa się z jednego oświadczenia, które przyznaje aplikacji na Androida uprawnienia do otwierania linków w witrynie:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
Lista instrukcji obsługuje tablicę z informacjami w znakach [ ], ale przykładowy plik zawiera tylko jedno wyrażenie.sha256_cert_fingerprints
to odciski cyfrowe SHA256 certyfikatu podpisywania aplikacji. Więcej informacji znajdziesz w dokumentacji linków aplikacji na Androida. - Aplikacja na Androida wymieniona w powyższym omówieniu ma filtr intencji, który określa schemat, hosta i wzór ścieżki adresów URL, które chce obsługiwać: w tym przypadku https://www.example.com. Filtr intencji zawiera specjalny atrybut
android:autoVerify
(nowszy dla Androida M), który wskazuje, że podczas instalacji aplikacji na Androida należy zweryfikować instrukcję w witrynie opisanej w filtrze intencji. - Użytkownik instaluje aplikację. Android widzi filtr intencji z atrybutem
autoVerify
i sprawdza, czy w określonej witrynie znajduje się lista instrukcji. Jeśli plik zawiera instrukcję, Android sprawdza, czy plik zawiera wyciąg z linkiem do aplikacji, i weryfikuje ją za pomocą hasha certyfikatu. Jeśli wszystko działa, Android przekierowuje wszystkie intencje https://www.example.com do aplikacji example.com. - Użytkownik klika link na stronie https://www.example.com/szczeniaki na swoim urządzeniu. Ten link może znajdować się w dowolnym miejscu: w przeglądarce, w sugestii Modułu Wyszukiwania Google lub w dowolnym innym miejscu. Android przekierowuje intencję do aplikacji example.com.
- Aplikacja example.com otrzymuje intencję i decyduje się ją obsłużyć, otwierając w niej stronę szczeniaków. Jeśli z jakiegoś powodu aplikacja odmówiła obsługi linku lub nie była na urządzeniu, link zostałby wysłany do następnego domyślnego modułu obsługi pasującego do tego wzorca intencji (często w przeglądarce).
Ważne uwagi i ograniczenia:
- Protokół nie uwierzytelnia podmiotu zabezpieczeń wykonującego instrukcje, ale znajduje się on w konkretnej lokalizacji, która jest silnie powiązana z podmiotem zabezpieczeń, i pod jego kontrolą.
- Protokół nie uwierzytelnia uwierzytelniania elementu docelowego, ale udostępnia metodę, która umożliwia uwierzytelnianie celu (np. instrukcja identyfikuje cele aplikacji mobilnych na podstawie skrótu certyfikatu i nazwy pakietu).
- Protokół nie wykonuje natywnie żadnych działań związanych z deklaracjami. Zamiast tego umożliwia udostępnianie instrukcji, które muszą sprawdzać i weryfikować aplikacje, a także zdecydować, co z nimi zrobić. Android M wykonuje te czynności za Ciebie. Jeśli na przykład strona przekazuje obsługę linków do określonej aplikacji, Android sprawdza i potwierdza oświadczenie, weryfikuje aplikację docelową, a potem umożliwia aplikacji obsługę wybranego linku.
- Protokół nie zezwala na wyrażanie informacji o 2 firmach zewnętrznych, tzn. witryna A może udzielać informacji o witrynie B, ale witryna A nie może składać żadnych oświadczeń o relacji witryny B z witryną C. Jeśli jednak witryna B jest zaufana dla witryny A, może sprawdzić, czy witryna A zawiera oświadczenie przyznające uprawnienia do witryny C, i zdecydować się na wdrożenie.