Przegląd
Protokół i interfejs API Digital Asset Links umożliwiają aplikacji lub witrynie publikowanie publicznych, możliwych do zweryfikowania oświadczeń o innych aplikacjach lub witrynach. Witryna może na przykład zadeklarować, że jest powiązana z konkretną aplikacją na Androida, lub że chce udostępniać dane użytkownika innej witrynie.
Oto kilka możliwych zastosowań funkcji Digital Asset Links:
- Strona A deklaruje, że linki do niej powinny otwierać się w wyznaczonej aplikacji na urządzeniach mobilnych, jeśli jest ona zainstalowana.
- Witryna A deklaruje, że może udostępniać swoje dane logowania użytkownika Chrome witrynie B, dzięki czemu nie będzie musiał logować się w witrynie B, jeśli jest zalogowany w witrynie A.
- Aplikacja A deklaruje, że może udostępniać stronie B ustawienia urządzenia, takie jak lokalizacja.
Kluczowe terminy
- Podmiot zabezpieczeń: podmiotem zabezpieczeń jest aplikacja lub witryna, która złożyła oświadczenie. W linkach do zasobów cyfrowych podmiotem zabezpieczeń jest zawsze aplikacja lub witryna hostująca listę instrukcji.
- Lista wyciągów: instrukcje znajdują się na liście instrukcji, która zawiera co najmniej 1 instrukcję. Lista instrukcji jest tekstem jawnym i publicznie dostępna, znajdującą się w lokalizacji kontrolowanej przez podmiot zabezpieczeń i trudnych do podrobienia lub modyfikacji. Może to być wolnostojący plik lub sekcja innego, większego elementu. Na przykład w witrynie jest to cały plik, a w aplikacji na Androida – 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ągów
- Oświadczenie: instrukcja to ściśle uporządkowany konstrukcja JSON, który składa się z relation (zgodnie z definicją, np. „Włącz udostępnianie danych uwierzytelniających”) i relation (witryny lub aplikacji, do której odnosi się dany związek). Dlatego każde stwierdzenie jest jak zdanie, w którym podmiot zabezpieczeń mówi relacja o celu.
- Konsument oświadczenia: klient korzystający z wyciągu prosi o listę wyciągów od podmiotu zabezpieczeń, sprawdza, czy istnieje oświadczenie dotyczące danego podmiotu zabezpieczeń i jeśli istnieje, może wykonać określone działanie. Więcej informacji znajdziesz w oświadczeniu dołączonym do dokumentacji.
Przykład szybkiego użycia
Oto bardzo uproszczony przykład wykorzystania w witrynie www.example.com linku do zasobów cyfrowych, który pozwala określić, że wszystkie linki do adresów URL w tej witrynie powinny otwierać się w wyznaczonej aplikacji, a nie w przeglądarce:
- Witryna www.example.com publikuje listę instrukcji pod adresem https://www.example.com/.well-known/assetlinks.json. To jest oficjalna nazwa i lokalizacja listy oświadczeń w witrynie. Listy z wyciągami z jakiejkolwiek innej lokalizacji nie mają zastosowania w tej witrynie. W naszym przykładzie lista instrukcji składa się z 1 instrukcji przyznającej 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ę instrukcji w znakach [ ], ale nasz przykładowy plik zawiera tylko jedną instrukcję.sha256_cert_fingerprints
to odciski cyfrowe SHA256 certyfikatu podpisywania Twojej aplikacji. Więcej informacji znajdziesz w dokumentacji dotyczącej linków aplikacji na Androida. - Aplikacja na Androida wymieniona w powyższej instrukcji ma filtr intencji, który określa schemat, hosta i wzorzec ścieżki adresów URL, które chce obsługiwać: w tym przypadku https://www.example.com. Filtr intencji zawiera specjalny atrybut
android:autoVerify
(nowy w Androidzie M), który wskazuje, że po zainstalowaniu aplikacji Android powinien zweryfikować instrukcję na stronie opisanej w filtrze intencji. - Użytkownik instaluje aplikację. Android wykrywa filtr intencji z atrybutem
autoVerify
i sprawdza, czy w danej witrynie znajduje się lista instrukcji. Jeśli taka lista jest dostępna, Android sprawdza, czy plik zawiera oświadczenie przyznające obsługę linku do aplikacji i weryfikuje aplikację pod kątem tego wyrażenia za pomocą haszowania certyfikatu. Jeśli wszystko będzie w porządku, Android przekaże do aplikacji example.com wszystkie intencje https://www.example.com. - Użytkownik klika na swoim urządzeniu link do strony https://www.example.com/szczeniaki. Ten link może znajdować się w dowolnym miejscu: w przeglądarce, sugestii Google Search Appliance lub dowolnym innym miejscu. Android przekazuje intencję do aplikacji example.com.
- Aplikacja example.com otrzymuje intencję i postanawia ją obsłużyć i otwiera w aplikacji stronę o szczeniakach. Jeśli z jakiegoś powodu aplikacja odmówiła obsługi linku lub jeśli aplikacji nie ma na urządzeniu, link zostałby wysłany do następnego domyślnego modułu obsługi intencji pasującej do tego wzorca intencji (często do przeglądarki).
Ważne informacje i ograniczenia:
- Protokół nie uwierzytelnia podmiotu zabezpieczeń składającego instrukcję, ale instrukcja znajduje się w konkretnej lokalizacji silnie powiązanej z podmiotem zabezpieczeń i pod jego kontrolą.
- Protokół nie uwierzytelnia celu instrukcji, ale zapewnia urządzeniu wywołującemu metodę uwierzytelniania środowiska docelowego (np. instrukcja identyfikuje cele aplikacji mobilnych według hasza certyfikatu i nazwy pakietu).
- Protokół nie wykonuje natywnie żadnych działań związanych z instrukcjami; umożliwia ujawnianie instrukcji, których weryfikacja musi zostać sprawdzona przez aplikację używaną w celu, a następnie decydować o tym, czy i jak podjąć dalsze działania. Android M natywnie wykonuje te czynności za Ciebie. Jeśli np. witryna przekazuje obsługę linków do określonej aplikacji, Android sprawdza i weryfikuje instrukcję, weryfikuje aplikację docelową, a następnie oferuje aplikacji możliwość obsługi danego linku.
- Protokół nie umożliwia wygłaszania oświadczeń dotyczących 2 osób trzecich: oznacza to, że witryna A może złożyć oświadczenie dotyczące witryny B, ale witryna A nie może udzielać informacji na temat relacji między witryną B a witryną C. Jeśli jednak witryna B ufa witrynie A, może ona sprawdzić, czy znajduje się w niej oświadczenie zezwalające witrynie C, i zdecydować się na jej wdrożenie.