Konfigurowanie łatwego udostępniania danych logowania w witrynach i aplikacjach na Androida

1. Przegląd

Czy użytkownicy korzystają z Twojej usługi w witrynach i aplikacjach na Androida? Zmuszanie użytkowników do osobnego logowania się na każdej platformie powoduje niepotrzebne utrudnienia i może prowadzić do rezygnacji.

Digital Asset Links (DAL) rozwiązuje ten problem, umożliwiając deklarowanie powiązań między witrynami a aplikacjami. Dzięki temu menedżerowie haseł, np. Menedżer haseł Google, mogą udostępniać sobie zapisane hasła i klucze dostępu.

Konfiguracja pliku Digital Asset Links wymaga różnych relacji w zależności od tego, co chcesz udostępniać:

  • W przypadku haseł: uwzględnienie delegate_permission/common.get_login_creds umożliwia menedżerom haseł udostępnianie zapisanych haseł między Twoją witryną a aplikacją.
  • Klucze dostępu: ponieważ klucze dostępu są ściśle powiązane z określoną domeną internetową, Android wymaga potwierdzenia własności domeny. Dlatego musisz dodać delegate_permission/common.handle_all_urls. Możesz rozpoznać to uprawnienie jako używane w przypadku linków do aplikacji na Androida (precyzyjnych linków), ale jest ono też niezbędne, aby umożliwić używanie kluczy dostępu utworzonych na jednej platformie na innej.

Efekt? Użytkownicy mogą logować się na powiązanych platformach bezproblemowo, używając haseł lub kluczy dostępu zapisanych tylko na jednej z nich.

Hasła dostępne w różnych usługach

Wdrożenie łatwego udostępniania danych logowania może znacznie zwiększyć wygodę użytkowników. Na przykład eBay odnotował 10-procentowy wzrost liczby udanych logowań po wdrożeniu DAL do udostępniania danych logowania.

Z tego ćwiczenia dowiesz się, jak używać protokołu Digital Asset Links, aby włączyć udostępnianie danych logowania między witryną a aplikacją na Androida.

Wymagania wstępne

Czego się nauczysz

  • Jak skonfigurować udostępnianie danych logowania za pomocą Konsoli Google Play (zalecane).
  • Jak ręcznie utworzyć plik assetlinks.json.
  • Jak skonfigurować aplikację na Androida do ręcznego powiązania.
  • Jak włączyć klucze dostępu w aplikacji na Androida, powiązując ją z domeną witryny.
  • Jak używać narzędzi do generowania i weryfikowania konfiguracji.

Czego potrzebujesz

  • Witryna: możliwość hostowania pliku JSON pod adresem https://{your-domain}/.well-known/assetlinks.json.
  • Aplikacja na Androida:
    • W przypadku metody Konsoli Play: aplikacja opublikowana w Google Play.
    • W przypadku metody ręcznej: projekt aplikacji na Androida, który możesz modyfikować i kompilować. Pamiętaj, że aby udostępnianie danych logowania Menedżerowi haseł Google działało, aplikacja musi być opublikowana w Google Play.

Jak to działa

Aby udostępnianie danych logowania działało, musisz ustanowić zaufanie dwukierunkowe:

  1. Sieć –> aplikacja: w Twojej witrynie musi być przechowywany plik assetlinks.json, który deklaruje, że witryna ufa Twojej aplikacji na Androida.
  2. Aplikacja –> internet: aplikacja na Androida musi być skonfigurowana tak, aby ufać Twojej witrynie.

Opiszemy 2 sposoby: automatyczny za pomocą Konsoli Google Play (zalecany) i ręczny za pomocą bezpośredniego użycia Digital Asset Links.

2. Konfigurowanie za pomocą Konsoli Google Play (zalecane)

Najprostszym sposobem włączenia udostępniania danych logowania między witryną a aplikacją na Androida jest skorzystanie z Konsoli Google Play. Ta metoda umożliwia powiązanie aplikacji z witryną bez konieczności modyfikowania pliku manifestu aplikacji ani publikowania jej nowej wersji. Google Play zarządza powiązaniem po stronie aplikacji.

Wymagania wstępne

  • uprawnienia w Konsoli Play do uzyskiwania dostępu do strony Precyzyjne linki;
  • możliwość opublikowania pliku /.well-known/assetlinks.json w swojej domenie;

Więcej informacji o precyzyjnych linkach znajdziesz w artykule Linki aplikacji na Androida.

Kroki

  1. W Konsoli Play kliknij Rozwój > Precyzyjne linki.
  2. Jeśli Twojej domeny nie ma na liście, kliknij Dodaj domenę w sekcji Konfiguracja aplikacji.
  3. Znajdź swoją domenę i odszukaj kolumnę Udostępnianie danych logowania. Kliknij Włącz (lub upewnij się, że w przypadku nowych domen opcja Włącz udostępnianie danych logowania jest włączona).
  4. Skopiuj fragment kodu JSON wygenerowany przez Konsolę Play.
  5. Opublikuj tę treść JSON w https://{your-domain}/.well-known/assetlinks.json. (Jeśli masz już ten plik, dodaj do niego nowe oświadczenie).
  6. Wróć do Konsoli Play i kliknij Utwórz powiązanie z witryną lub Włącz udostępnianie danych logowania.

Konsola Play zweryfikuje teraz konfigurację hostingu.

Precyzyjne linki w Konsoli Play

Aby udostępnianie danych logowania działało, dostawca hostingu witryny musi spełniać te wymagania:

  • Adres URL jest dostępny przez HTTPS.
  • Serwer odpowiada kodem Content-Type: application/json.
  • URL jest dostępny bez przekierowań.

Po zweryfikowaniu udostępnianie danych logowania zostanie włączone. Zastosowanie zmian w konfiguracji może potrwać od 1 do 2 tygodni.

3. Konfigurowanie ręczne za pomocą Digital Asset Links

Chcesz mieć większą kontrolę? lub nie masz dostępu do Konsoli Play? Udostępnianie danych logowania między witryną a aplikacją na Androida możesz skonfigurować ręcznie. Obejmuje to 2 główne zadania: hostowanie pliku JSON w witrynie i zaktualizowanie pliku manifestu aplikacji na Androida.

1. Uzyskiwanie cyfrowego odcisku palca aplikacji

Zanim skonfigurujesz łatwe udostępnianie danych logowania, upewnij się, że masz te elementy na każdej platformie:

W przypadku każdej aplikacji na Androida:

2. Tworzenie pliku powiązania

Musisz utworzyć plik assetlinks.json, który deklaruje relacje między Twoją witryną a aplikacją. Użyj delegate_permission/common.get_login_creds, aby przyznać uprawnienia do udostępniania haseł, a delegate_permission/common.handle_all_urls, aby włączyć precyzyjne linki i udostępniać klucze dostępu.

Utwórz plik o nazwie assetlinks.json z następującą treścią. Zastąp przykładowe wartości własnym adresem URL witryny, nazwą pakietu i odciskiem palca:

[{
  "relation": [
    "delegate_permission/common.handle_all_urls",
    "delegate_permission/common.get_login_creds"
    ],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.app",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]

3. Hostowanie pliku

Prześlij plik assetlinks.json do katalogu .well-known w katalogu głównym domeny.

Lokalizacja: https://{your-domain}/.well-known/assetlinks.json

Aby udostępnianie danych logowania działało, dostawca hostingu witryny musi spełniać te wymagania:

  • Adres URL jest dostępny przez HTTPS.
  • Serwer odpowiada kodem Content-Type: application/json.
  • URL jest dostępny bez przekierowań.

Web to App

4. Konfigurowanie aplikacji na Androida

Teraz poinformuj aplikację na Androida, że witryna jest zaufana. W pliku manifestu dodasz odwołanie do pliku zasobów zawierającego Twój assetlinks.json URL.

1. Dodawanie zasobu tekstowego

res/values/strings.xml dodaj nowy ciąg znaków asset_statements. Zwróć uwagę na znaki ucieczki przy cudzysłowach.

<resources>
    <string name="asset_statements" translatable="false">
      [{
        \"include\": \"https://www.example.com/.well-known/assetlinks.json\"
      }]
    </string>
</resources>

2. Dodawanie metadanych do pliku manifestu

W pliku AndroidManifest.xml dodaj tag <meta-data> w elemencie <application>, który odwołuje się do tego zasobu tekstowego:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="asset_statements"
            android:resource="@string/asset_statements" />

        <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>

Po wykonaniu tych czynności i opublikowaniu nowej wersji aplikacji na Androida menedżery haseł obsługujące Digital Asset Links (np. Menedżer haseł Google) będą mogły sugerować dane logowania zapisane dla www.example.com, gdy użytkownik spróbuje zalogować się w com.example.app, i odwrotnie.

4. Sprawdzanie konfiguracji

Przed wysłaniem aplikacji koniecznie sprawdź konfigurację Digital Asset Links. Nieprawidłowy plik JSON lub niedostępne pliki nie będą powodować błędów.

Użyj oficjalnego narzędzia Generator i walidator oświadczeń.

Generator i weryfikator oświadczeń

  1. Wpisz domenę witrynynazwę pakietu aplikacji.
  2. Kliknij Test Statement (Testowy wyciąg).
  3. Narzędzie sprawdzi, czy plik assetlinks.json jest prawidłowo hostowany i zawiera prawidłowe powiązanie.

5. Udostępnianie danych logowania w wielu witrynach

Web to App

Jeśli masz kilka witryn korzystających z tego samego systemu logowania (np. example.comexample.co.uk), możesz zadeklarować je jako powiązane, aby można było udostępniać między nimi dane logowania.

Udostępnianie haseł na wielu stronach

Aby udostępniać hasła między witrynami, możesz zadeklarować powiązanie webweb za pomocą delegate_permission/common.get_login_creds.

Na przykład, aby example.com mogła udostępniać hasła użytkownikowi example.co.uk, plik assetlinks.json hostowany na stronie https://example.com/.well-known/assetlinks.json musi zawierać oświadczenie skierowane do użytkownika example.co.uk:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://example.co.uk"
  }
}]

Podobnie https://example.co.uk/.well-known/assetlinks.json musi zawierać oświadczenie kierowane do example.com.

Udostępnianie kluczy dostępu w wielu witrynach

Aby umożliwić wielu witrynom udostępnianie tych samych kluczy dostępu, muszą one używać tego samego identyfikatora podmiotu ufającego (RP ID). W przypadku WebAuthn i kluczy dostępu identyfikator RP określa zakres danych logowania według nazwy domeny. Klucz dostępu jest powiązany z konkretnym identyfikatorem RP i może być używany tylko w domenach, które wchodzą w zakres tego identyfikatora. Prawidłowe zdefiniowanie identyfikatora RP zapewnia bezproblemowe korzystanie z kluczy dostępu w subdomenach, źródłach różnych witryn i aplikacjach mobilnych własnych. Więcej informacji o ustawianiu identyfikatora RP znajdziesz w artykule Understanding Relying Party ID (RP ID) (Identyfikator RP). Dzięki powiązanym żądaniom pochodzenia jedna witryna może określić inne pochodzenia, które mogą używać jej identyfikatora RP, co pozwala użytkownikom ponownie używać tego samego klucza dostępu w wielu witrynach, które obsługujesz. Pamiętaj, że różni się to od udostępniania kluczy dostępu między witryną a aplikacją na Androida, które wykorzystuje delegate_permission/common.handle_all_urls w protokole Digital Asset Links.

Jeśli na przykład chcesz, aby witryny example.comexample.co.uk współużytkowały klucze dostępu, możesz zdecydować, że example.com będzie kanonicznym identyfikatorem RP. Aby to działało, example.co.uk musi używać rpId: 'example.com' w wywołaniach interfejsu WebAuthn API, a example.com musi hostować plik pod adresem https://example.com/.well-known/webauthn, aby dodać example.co.uk do listy dozwolonych:

{
  "origins": [
    "https://example.co.uk"
  ]
}

Umożliwia to example.co.uk tworzenie i używanie kluczy dostępu powiązanych z example.com.

6. Podsumowanie

Gratulacje! Udało Ci się skonfigurować łatwe udostępnianie danych logowania.

Użytkownicy mogą teraz zapisywać hasła i klucze dostępu w Twojej witrynie i używać ich do logowania się w aplikacji na Androida jednym kliknięciem (i odwrotnie). Ta prosta zmiana może znacznie zwiększyć współczynniki konwersji logowania i satysfakcję użytkowników.

Co dalej?