Przegląd
Protokół i interfejs Digital Asset Links umożliwiają aplikacji lub witrynie publikowanie weryfikowalnych oświadczeń dotyczących innych aplikacji lub witryn. Na przykład witryna może zadeklarować, że jest powiązana z określoną aplikacją na Androida, lub że chce udostępniać dane logowania użytkownika innej witrynie.
Oto kilka możliwych zastosowań Digital Asset Links:
- Witryna 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 w Chrome witrynie B, aby użytkownik nie 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, np. lokalizację.
Kluczowe terminy
- Podmiot: podmiot to aplikacja lub witryna, która składa oświadczenie. W przypadku linków do zasobów cyfrowych podmiotem jest zawsze aplikacja lub witryna, w której znajduje się lista instrukcji.
- Lista instrukcji: instrukcje znajdują się na liście instrukcji, która zawiera co najmniej jedną instrukcję. Lista oświadczeń jest dostępna publicznie w formie zwykłego tekstu w lokalizacji kontrolowanej przez podmiot, którą trudno jest sfałszować lub zmodyfikować. Może to być samodzielny plik lub sekcja innego, większego elementu. Na przykład w witrynie internetowej jest to cały plik, a w aplikacji na Androida – sekcja w pliku manifestu aplikacji. Oświadczenia może wyświetlać i weryfikować każdy, korzystając z metod nieobjętych prawem własności. Więcej informacji znajdziesz w dokumentacji listy instrukcji
- Oświadczenie: oświadczenie to ściśle ustrukturyzowana konstrukcja JSON, która składa się z relacji (informacji o tym, co należy zrobić, np. włączyć udostępnianie danych logowania) i elementu docelowego (witryny lub aplikacji, do której odnosi się relacja). Dlatego każde stwierdzenie jest jak zdanie, w którym podmiot mówi relację o obiekcie.
- Podmiot korzystający z oświadczenia: podmiot korzystający z oświadczenia wysyła do podmiotu głównego prośbę o listę oświadczeń, sprawdza, czy oświadczenie dotyczące danego podmiotu głównego istnieje, a jeśli tak, może wykonać określone działanie. Więcej informacji znajdziesz w dokumentacji dotyczącej instrukcji wykorzystujących dane.
Szybki przykład użycia
Oto bardzo uproszczony przykład tego, jak witryna www.example.com może używać linków do zasobów cyfrowych, aby 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. Jest to oficjalna nazwa i lokalizacja listy oświadczeń w witrynie. Listy oświadczeń w innych lokalizacjach lub o innych nazwach nie są w tej witrynie ważne. W naszym przykładzie lista instrukcji składa się z jednej instrukcji, która przyznaje aplikacji na Androida uprawnienie do otwierania linków w witrynie:
Lista instrukcji obsługuje tablicę instrukcji w nawiasach kwadratowych [ ], ale nasz przykładowy plik zawiera tylko jedną instrukcję.[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
sha256_cert_fingerprints
to odciski cyfrowe SHA256 certyfikatu podpisywania aplikacji. Więcej informacji znajdziesz w dokumentacji linków do aplikacji na Androida. - Aplikacja na Androida wymieniona w powyższym oświadczeniu ma filtr intencji, który określa schemat, hosta i wzorzec ścieżki adresów URL, które ma obsługiwać – w tym przypadku https://www.example.com. Filtr intencji zawiera specjalny atrybut
android:autoVerify
, który jest nowością w Androidzie M i wskazuje, że Android powinien zweryfikować oświadczenie w witrynie opisanej w filtrze intencji podczas instalowania aplikacji. - Użytkownik instaluje aplikację. Android wykrywa filtr intencji z atrybutem
autoVerify
i sprawdza, czy w określonej witrynie znajduje się lista instrukcji. Jeśli tak, Android sprawdza, czy plik zawiera instrukcję przyznającą aplikacji uprawnienia do obsługi linków, i weryfikuje aplikację na podstawie instrukcji za pomocą skrótu certyfikatu. Jeśli wszystko się zgadza, Android przekieruje intencje dotyczące https://www.example.com do aplikacji example.com. - Użytkownik klika na swoim urządzeniu link do strony https://www.example.com/szczeniaki. Link może znajdować się w dowolnym miejscu: w przeglądarce, w sugestii urządzenia Google Search Appliance lub w innym miejscu. Android przekazuje intencję do aplikacji example.com.
- Aplikacja example.com otrzymuje intencję i decyduje się ją obsłużyć, otwierając w aplikacji stronę ze szczeniakami. Jeśli z jakiegoś powodu aplikacja odmówiła obsługi linku lub jeśli nie było jej na urządzeniu, link zostałby wysłany do następnego domyślnego modułu obsługi intencji pasującego do tego wzorca intencji (zwykle przeglądarki).
Ważne kwestie i ograniczenia:
- Protokół nie uwierzytelnia podmiotu zabezpieczeń, który składa oświadczenie, ale oświadczenie znajduje się w określonej lokalizacji silnie powiązanej z tym podmiotem i kontrolowanej przez niego.
- Protokół nie uwierzytelnia celu instrukcji, ale umożliwia wywołującemu uwierzytelnienie celu (np. instrukcja identyfikuje cele aplikacji mobilnych za pomocą skrótu certyfikatu i nazwy pakietu).
- Protokół nie wykonuje natywnie żadnych działań związanych z oświadczeniami, ale umożliwia ich udostępnianie. Aplikacja korzystająca z tych oświadczeń musi je zweryfikować, a następnie zdecydować, czy i jak na nie zareagować. Android M wykonuje te czynności natywnie. Jeśli na przykład witryna przekazuje obsługę linku do konkretnej aplikacji, Android sprawdza i weryfikuje instrukcję, weryfikuje aplikację docelową, a następnie oferuje jej możliwość obsługi danego linku.
- Protokół nie umożliwia składania oświadczeń dotyczących dwóch podmiotów zewnętrznych. Oznacza to, że witryna A może złożyć oświadczenie dotyczące witryny B, ale nie może złożyć oświadczenia dotyczącego relacji witryny B z witryną C. Jeśli jednak witryna B ufa witrynie A, może sprawdzić, czy witryna A zawiera oświadczenie przyznające uprawnienia witrynie C, i zdecydować się na jego wdrożenie.