Nahtlose Weitergabe von Anmeldedaten zwischen Websites und Android-Apps einrichten

1. Übersicht

Greifen Ihre Nutzer sowohl über Websites als auch über Android-Apps auf Ihren Dienst zu? Wenn Nutzer sich auf jeder Plattform separat anmelden müssen, führt das zu unnötigen Schwierigkeiten und kann zu Abbrüchen führen.

Mit Digital Asset Links (DAL) können Sie Verknüpfungen zwischen Ihren Websites und Apps deklarieren. So können Passwortmanager wie der Google Passwortmanager gespeicherte Passwörter und Passkeys untereinander teilen.

Für die Konfiguration Ihrer Digital Asset Links-Datei sind je nach Inhalt, den Sie freigeben möchten, unterschiedliche Beziehungen erforderlich:

  • Für Passwörter: Wenn Sie delegate_permission/common.get_login_creds einfügen, können Passwortmanager gespeicherte Passwörter zwischen Ihrer Website und Ihrer App freigeben.
  • Für Passkeys: Da Passkeys streng an eine bestimmte Webdomain gebunden sind, ist unter Android ein Nachweis der Domaininhaberschaft erforderlich. Daher müssen Sie delegate_permission/common.handle_all_urls angeben. Diese Berechtigung wird auch für Android-App-Links (Deeplinking) verwendet. Sie ist aber auch eine zwingende Voraussetzung dafür, dass auf einer Plattform erstellte Passkeys auf der anderen Plattform verwendet werden können.

Das Ergebnis: Nutzer können sich nahtlos auf allen verknüpften Plattformen anmelden, indem sie die Passwörter oder Passkeys verwenden, die nur für eine der Plattformen gespeichert sind.

Passwörter sind in allen Properties verfügbar

Durch die Implementierung einer nahtlosen Anmeldedatenfreigabe kann die Nutzerfreundlichkeit erheblich verbessert werden. So konnte eBay die Anzahl erfolgreicher Anmeldungen um 10% steigern, nachdem das Unternehmen DAL für die Weitergabe von Anmeldedaten implementiert hatte.

In diesem Codelab erfahren Sie, wie Sie Digital Asset Links verwenden, um die gemeinsame Nutzung von Anmeldedaten zwischen Ihrer Website und Ihrer Android-App zu ermöglichen.

Vorbereitung

Lerninhalte

  • So richten Sie die Weitergabe von Anmeldedaten über die Google Play Console ein (empfohlen).
  • So erstellen Sie manuell eine assetlinks.json-Datei.
  • Android-App für die manuelle Verknüpfung konfigurieren
  • So aktivieren Sie Passkeys in einer Android-App, indem Sie sie mit einer Websitedomain verknüpfen.
  • Tools zum Generieren und Validieren der Einrichtung verwenden

Voraussetzungen

  • Eine Website: Sie müssen eine JSON-Datei unter https://{your-domain}/.well-known/assetlinks.json hosten können.
  • Android-App:
    • Für die Play Console-Methode: Eine bei Google Play veröffentlichte App.
    • Manuelle Methode: Ein Android-Projekt, das Sie ändern und erstellen können. Damit die Anmeldedaten mit dem Google Passwortmanager geteilt werden können, muss die App bei Google Play veröffentlicht sein.

Funktionsweise

Damit die gemeinsame Nutzung von Anmeldedaten funktioniert, müssen Sie eine bidirektionale Vertrauensbeziehung einrichten:

  1. Web → App: Auf Ihrer Website muss eine assetlinks.json-Datei gehostet werden, in der erklärt wird, dass Ihre Android-App vertrauenswürdig ist.
  2. App → Web: Ihre Android-App muss so konfiguriert sein, dass sie Ihrer Website vertraut.

Wir stellen zwei Möglichkeiten vor: die automatische Methode über die Google Play Console (empfohlen) und die manuelle Methode über Digital Asset Links.

2. Einrichtung über die Google Play Console (empfohlen)

Die einfachste Methode zum Aktivieren der Freigabe von Anmeldedaten zwischen Ihrer Website und Ihrer Android-App ist die Google Play Console. Mit dieser Methode können Sie Ihre App mit Ihrer Website verknüpfen, ohne das Manifest Ihrer App ändern oder eine neue Version Ihrer App veröffentlichen zu müssen. Google Play verwaltet die App-seitige Verknüpfung für Sie.

Vorbereitung

  • Play Console-Berechtigungen für den Zugriff auf die Seite Deeplinks.
  • Sie können eine /.well-known/assetlinks.json-Datei in Ihrer Domain veröffentlichen.

Weitere Informationen zu Deeplinks finden Sie unter Android App Links.

Schritte

  1. Rufen Sie in der Play Console die Seite Wachstum > Deeplinks auf.
  2. Wenn Ihre Domain nicht aufgeführt ist, klicken Sie unter App-Konfiguration auf Domain hinzufügen.
  3. Suchen Sie nach Ihrer Domain und suchen Sie die Spalte Anmeldedaten teilen. Klicken Sie auf Aktivieren oder sorgen Sie dafür, dass Freigabe von Anmeldedaten aktivieren für neue Domains aktiviert ist.
  4. Kopieren Sie den von der Play Console generierten JSON-Ausschnitt.
  5. Veröffentliche diesen JSON-Inhalt unter https://{your-domain}/.well-known/assetlinks.json. Wenn Sie diese Datei bereits haben, hängen Sie die neue Erklärung an.
  6. Klicken Sie in der Play Console auf Website-Verknüpfung erstellen oder Freigabe von Anmeldedaten aktivieren.

In der Play Console wird jetzt Ihre Hosting-Einrichtung überprüft.

Deeplinks in der Play Console

Damit die Weitergabe von Anmeldedaten funktioniert, muss Ihr Website-Host die folgenden Anforderungen erfüllen:

  • Die URL ist über HTTPS zugänglich.
  • Der Server antwortet mit Content-Type: application/json.
  • Die URL ist ohne Weiterleitungen zugänglich.

Nach der Bestätigung ist die Freigabe von Anmeldedaten aktiviert. Es kann ein bis zwei Wochen dauern, bis Konfigurationsänderungen wirksam werden.

3. Manuell mit Digital Asset Links einrichten

Möchtest du mehr Kontrollmöglichkeiten? Oder haben Sie keinen Zugriff auf die Play Console? Sie können die Freigabe von Anmeldedaten zwischen Ihrer Website und Ihrer Android-App manuell konfigurieren. Dazu sind zwei Hauptaufgaben erforderlich: Hosten der JSON-Datei auf Ihrer Website und Aktualisieren des Android-App-Manifests.

1. Digitalen Fingerabdruck Ihrer App abrufen

Bevor Sie die nahtlose Weitergabe von Anmeldedaten einrichten, müssen Sie für jede Plattform Folgendes haben:

Für jede Android-App:

2. Verknüpfungsdatei erstellen

Sie müssen eine assetlinks.json-Datei erstellen, in der die Beziehungen zwischen Ihrer Website und Ihrer App deklariert werden. Verwenden Sie delegate_permission/common.get_login_creds, um die Berechtigung zum Teilen von Passwörtern zu erteilen, und delegate_permission/common.handle_all_urls, um Deeplinking zu aktivieren und Passkeys zu teilen.

Erstellen Sie eine Datei mit dem Namen assetlinks.json und folgendem Inhalt. Ersetzen Sie die Beispielwerte durch Ihre eigene Website-URL, Ihren Paketnamen und Ihren Fingerabdruck:

[{
  "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. Datei hosten

Laden Sie die assetlinks.json-Datei in das Verzeichnis .well-known im Stammverzeichnis Ihrer Domain hoch.

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

Damit die Weitergabe von Anmeldedaten funktioniert, muss Ihr Website-Host die folgenden Anforderungen erfüllen:

  • Die URL ist über HTTPS zugänglich.
  • Der Server antwortet mit Content-Type: application/json.
  • Die URL ist ohne Weiterleitungen zugänglich.

Web-zu-App

4. Android-App konfigurieren

Weisen Sie Ihre Android-App nun an, der Website zu vertrauen. Sie fügen im Manifest einen Verweis auf eine Ressourcendatei mit Ihrer assetlinks.json-URL hinzu.

1. String-Ressource hinzufügen

Fügen Sie in res/values/strings.xml einen neuen String asset_statements hinzu. Beachten Sie die maskierten Anführungszeichen.

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

2. Dem Manifest Metadaten hinzufügen

Fügen Sie in AndroidManifest.xml innerhalb des <application>-Elements ein <meta-data>-Tag hinzu, das auf diese String-Ressource verweist:

<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>

Nachdem Sie diese Schritte ausgeführt und eine neue Version Ihrer Android-App veröffentlicht haben, können Passwortmanager, die Digital Asset Links unterstützen (z. B. Google Passwortmanager), Anmeldedaten vorschlagen, die für www.example.com gespeichert wurden, wenn der Nutzer versucht, sich in com.example.app anzumelden, und umgekehrt.

4. Einrichtung überprüfen

Bevor Sie Ihre App veröffentlichen, müssen Sie unbedingt Ihre Digital Asset Links-Konfiguration überprüfen. Bei falschem JSON oder nicht erreichbaren Dateien tritt kein Fehler auf.

Verwenden Sie das offizielle Tool zum Generieren und Validieren von Erklärungen.

Auszugsgenerator und ‑validator

  1. Geben Sie die Domain Ihrer Website und den Paketnamen Ihrer App ein.
  2. Klicken Sie auf Testabrechnung.
  3. Das Tool prüft, ob die Datei assetlinks.json richtig gehostet wird und die gültige Verknüpfung enthält.

5. Anmeldedaten für mehrere Websites freigeben

Web-zu-App

Wenn Sie mehrere Websites haben, die dasselbe Anmeldesystem verwenden (z. B. example.com und example.co.uk), können Sie sie als verbunden deklarieren, damit Anmeldedaten zwischen ihnen geteilt werden können.

Passwörter für mehrere Websites freigeben

Wenn Sie Passwörter zwischen Websites teilen möchten, können Sie mit delegate_permission/common.get_login_creds eine web-zu-web-Verknüpfung deklarieren.

Wenn example.com beispielsweise Passwörter mit example.co.uk teilen möchte, muss die auf https://example.com/.well-known/assetlinks.json gehostete Datei assetlinks.json eine Anweisung für example.co.uk enthalten:

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

Ebenso muss https://example.co.uk/.well-known/assetlinks.json eine Aussage enthalten, die auf example.com abzielt.

Passkeys für mehrere Websites freigeben

Damit mehrere Websites dieselben Passkeys verwenden können, müssen sie dieselbe Relying Party-ID (RP‑ID) verwenden. Bei WebAuthn und Passkeys wird der Umfang von Anmeldedaten durch den Domainnamen der RP-ID festgelegt. Wenn Sie einen Passkey erstellen, wird er mit einer bestimmten RP‑ID verknüpft und kann nur auf Domains verwendet werden, die in den Bereich dieser ID fallen. Wenn Sie Ihre RP‑ID richtig definieren, wird ein nahtloses Passkey-Erlebnis über Subdomains, ursprungsübergreifende Websites und selbst entwickelte mobile Apps hinweg gewährleistet. Weitere Informationen zum Festlegen der RP‑ID Mit Anfragen mit Bezug zum Ursprung kann eine Website andere Ursprünge angeben, die ihre RP‑ID verwenden dürfen. So können Nutzer denselben Passkey auf mehreren Websites verwenden, die Sie betreiben. Das ist anders als beim Teilen von Passkeys zwischen einer Website und einer Android-App, bei dem delegate_permission/common.handle_all_urls in Digital Asset Links verwendet wird.

Wenn Sie beispielsweise möchten, dass example.com und example.co.uk Passkeys gemeinsam nutzen, können Sie festlegen, dass example.com die kanonische RP-ID ist. Damit dies funktioniert, muss example.co.uk in seinen WebAuthn API-Aufrufen rpId: 'example.com' verwenden und example.com muss eine Datei unter https://example.com/.well-known/webauthn hosten, um example.co.uk auf die Zulassungsliste zu setzen:

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

Dadurch kann example.co.uk Passkeys erstellen und verwenden, die mit example.com verknüpft sind.

6. Fazit

Glückwunsch! Sie haben die nahtlose Weitergabe von Anmeldedaten eingerichtet.

Nutzer können jetzt ein Passwort und einen Passkey auf Ihrer Website speichern und sich damit mit nur einem Fingertipp in Ihrer Android-App anmelden (und umgekehrt). Diese einfache Änderung kann die Anmelde-Conversion-Raten und die Nutzerzufriedenheit erheblich steigern.

Nächste Schritte