Configurer le partage continu d'identifiants entre les sites Web et les applications Android

1. Présentation

Vos utilisateurs accèdent-ils à votre service à la fois sur des sites Web et des applications Android ? Les obliger à se connecter séparément sur chaque plate-forme crée des frictions inutiles et peut entraîner des abandons.

Digital Asset Links (DAL) résout ce problème en vous permettant de déclarer des associations entre vos sites Web et vos applications. Les gestionnaires de mots de passe, comme le Gestionnaire de mots de passe de Google, peuvent ainsi partager les mots de passe et les clés d'accès enregistrés entre eux.

Plus précisément, la configuration de votre fichier Digital Asset Links nécessite différentes relations en fonction de ce que vous souhaitez partager :

  • Pour les mots de passe : l'inclusion de delegate_permission/common.get_login_creds permet aux gestionnaires de mots de passe de partager les mots de passe enregistrés entre votre site Web et votre application.
  • Pour les clés d'accès : comme les clés d'accès sont strictement liées à un domaine Web spécifique, Android exige une preuve de propriété du domaine. Vous devez donc inclure delegate_permission/common.handle_all_urls. Bien que vous puissiez reconnaître qu'il s'agit de l'autorisation utilisée pour les liens d'application Android (liens profonds), il s'agit également d'une exigence stricte pour permettre l'utilisation des clés d'accès créées sur une plate-forme sur l'autre.

Le résultat ? Les utilisateurs peuvent se connecter de manière transparente sur vos plates-formes affiliées à l'aide des mots de passe ou des clés d'accès enregistrés pour l'une d'elles.

Mots de passe disponibles dans toutes les propriétés

L'implémentation du partage continu d'identifiants peut améliorer considérablement l'expérience utilisateur. Par exemple, eBay a enregistré une augmentation de 10 % du taux de connexion après avoir implémenté DAL pour le partage d'identifiants.

Dans cet atelier de programmation, vous apprendrez à utiliser Digital Asset Links pour activer le partage d'identifiants entre votre site Web et votre application Android.

Prérequis

Points abordés

  • Comment configurer le partage d'identifiants à l'aide de la Google Play Console (recommandé)
  • Comment créer manuellement un fichier assetlinks.json
  • Comment configurer une application Android pour une association manuelle
  • Comment activer les clés d'accès sur une application Android en l'associant à un domaine de site Web
  • Comment utiliser des outils pour générer et valider votre configuration

Ce dont vous avez besoin

  • Un site Web : possibilité d'héberger un fichier JSON à l'adresse https://{your-domain}/.well-known/assetlinks.json.
  • Une application Android :
    • Pour la méthode Play Console : une application publiée sur Google Play.
    • Pour la méthode manuelle : un projet Android que vous pouvez modifier et créer. Notez que pour que le partage d'identifiants avec le Gestionnaire de mots de passe de Google fonctionne, l'application doit être publiée sur Google Play.

Fonctionnement

Pour que le partage d'identifiants fonctionne, vous devez établir une confiance bidirectionnelle :

  1. Web -> Application : votre site Web doit héberger un fichier assetlinks.json déclarant qu'il fait confiance à votre application Android.
  2. Application -> Web : votre application Android doit être configurée pour faire confiance à votre site Web.

Nous allons aborder deux façons de procéder : la méthode automatique à l'aide de la Google Play Console (recommandée) et la méthode manuelle à l'aide de Digital Asset Links directement.

2. Configuration à l'aide de la Google Play Console (recommandée)

La méthode la plus simple pour activer le partage d'identifiants entre votre site Web et votre application Android consiste à utiliser la Google Play Console. Cette méthode vous permet d'associer votre application à votre site Web sans avoir à modifier le fichier manifeste de votre application ni à publier une nouvelle version de votre application. Google Play gère l'association côté application pour vous.

Prérequis

  • Autorisations Play Console pour accéder à la page Liens profonds.
  • Possibilité de publier un fichier /.well-known/assetlinks.json sur votre domaine.

Pour en savoir plus sur les liens profonds, consultez Liens d'application Android.

Étapes

  1. Dans la Play Console, accédez à Croissance > Liens profonds.
  2. Si votre domaine n'est pas listé, cliquez sur Ajouter un domaine sous Configuration de l'application.
  3. Recherchez votre domaine, puis localisez la colonne Partage d'identifiants. Cliquez sur Activer (ou assurez-vous que l'option Activer le partage d'identifiants est activée pour les nouveaux domaines).
  4. Copiez l'extrait JSON généré par la Play Console.
  5. Publiez ce contenu JSON sur https://{your-domain}/.well-known/assetlinks.json. (Si vous possédez déjà ce fichier, ajoutez-y la nouvelle instruction.)
  6. De retour dans la Play Console, cliquez sur Créer une association de site Web ou Activer le partage d'identifiants.

La Play Console va maintenant vérifier votre configuration d'hébergement.

Liens profonds de la Play Console

Pour que le partage d'identifiants fonctionne, votre hôte de site Web doit répondre aux exigences suivantes :

  • L'URL est accessible via HTTPS.
  • Le serveur répond avec Content-Type: application/json.
  • L'URL est accessible sans redirection.

Une fois la vérification effectuée, le partage d'identifiants est actif. La prise en compte des modifications de configuration peut prendre une à deux semaines.

3. Configuration manuelle à l'aide de Digital Asset Links

Besoin de plus de contrôle ? Ou vous n'avez pas accès à la Play Console ? Vous pouvez configurer manuellement le partage d'identifiants entre votre site Web et votre application Android. Cela implique deux tâches principales : héberger le fichier JSON sur votre site et mettre à jour le fichier manifeste de votre application Android.

1. Obtenir l'empreinte numérique de votre application

Avant de configurer le partage continu d'identifiants, assurez-vous de disposer des éléments suivants pour chaque plate-forme :

Pour chaque application Android :

2. Créer le fichier d'association

Vous devez créer un fichier assetlinks.json qui déclare les relations entre votre site Web et votre application. Utilisez delegate_permission/common.get_login_creds pour accorder l'autorisation de partager des mots de passe et delegate_permission/common.handle_all_urls pour activer les liens profonds et partager des clés d'accès.

Créez un fichier nommé assetlinks.json avec le contenu suivant. Remplacez les exemples de valeurs par l'URL de votre propre site, le nom de package et l'empreinte :

[{
  "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. Héberger le fichier

Importez votre fichier assetlinks.json dans le répertoire .well-known à la racine de votre domaine.

Zone géographique : https://{your-domain}/.well-known/assetlinks.json

Pour que le partage d'identifiants fonctionne, votre hôte de site Web doit répondre aux exigences suivantes :

  • L'URL est accessible via HTTPS.
  • Le serveur répond avec Content-Type: application/json.
  • L'URL est accessible sans redirection.

Web-to-app

4. Configurer votre application Android

Indiquez maintenant à votre application Android qu'elle doit faire confiance au site Web. Vous allez ajouter une référence dans le fichier manifeste qui pointe vers un fichier de ressources contenant votre URL assetlinks.json.

1. Ajouter une ressource de chaîne

Dans res/values/strings.xml, ajoutez une nouvelle chaîne asset_statements. Notez les guillemets d'échappement.

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

2. Ajouter des métadonnées au fichier manifeste

Dans AndroidManifest.xml, ajoutez une balise <meta-data> dans l'élément <application> qui référence cette ressource de chaîne :

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

Une fois ces étapes effectuées et une nouvelle version de votre application Android publiée, les gestionnaires de mots de passe compatibles avec Digital Asset Links (comme le Gestionnaire de mots de passe de Google) pourront suggérer les identifiants enregistrés pour www.example.com lorsque l'utilisateur tentera de se connecter à com.example.app, et vice versa.

4. Vérifier votre configuration

Avant de procéder à l'expédition, il est essentiel de vérifier votre configuration Digital Asset Links. Les fichiers JSON incorrects ou inaccessibles échoueront de manière silencieuse.

Utilisez l'outil officiel Générateur et validateur d'instructions.

Générateur et validateur d&#39;énoncés

  1. Saisissez le domaine de votre site et le nom de package de l'application.
  2. Cliquez sur Tester l'instruction.
  3. L'outil vérifiera si le fichier assetlinks.json est hébergé correctement et s'il contient l'association valide.

5. Partager des identifiants entre plusieurs sites Web

Web-to-app

Si plusieurs de vos sites Web partagent le même système de connexion (par exemple, example.com et example.co.uk), vous pouvez les déclarer comme affiliés afin que les identifiants puissent être partagés entre eux.

Partager des mots de passe entre plusieurs sites Web

Pour partager des mots de passe entre des sites Web, vous pouvez déclarer une association web-à-web à l'aide de delegate_permission/common.get_login_creds.

Par exemple, pour que example.com partage des mots de passe avec example.co.uk, le fichier assetlinks.json hébergé sur https://example.com/.well-known/assetlinks.json doit inclure une instruction ciblant example.co.uk :

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

De même, https://example.co.uk/.well-known/assetlinks.json doit inclure une instruction ciblant example.com.

Partager des clés d'accès entre plusieurs sites Web

Pour autoriser plusieurs sites Web à partager les mêmes clés d'accès, ils doivent utiliser le même ID de partie de confiance (RP ID). Dans WebAuthn et les clés d'accès, l'ID de partie de confiance spécifie le champ d'application d'un identifiant par nom de domaine. Lorsque vous créez une clé d'accès, elle est liée à un ID de partie de confiance spécifique et ne peut être utilisée que sur les domaines qui entrent dans le champ d'application de cet ID. Définir correctement votre ID de partie de confiance garantit une expérience de clé d'accès fluide sur les sous-domaines, les origines intersites et les applications mobiles propriétaires. Pour en savoir plus sur la définition de l'ID de partie de confiance, consultez Comprendre l'ID de partie de confiance (RP ID). Avec les requêtes d'origine associée, un site Web peut spécifier d'autres origines autorisées à utiliser son ID de partie de confiance, ce qui permet aux utilisateurs de réutiliser la même clé d'accès sur plusieurs sites que vous exploitez. Notez que cela est différent du partage de clés d'accès entre un site Web et une application Android, qui utilise delegate_permission/common.handle_all_urls dans Digital Asset Links.

Par exemple, si vous souhaitez que example.com et example.co.uk partagent des clés d'accès, vous pouvez décider que example.com sera l'ID de partie de confiance canonique. Pour que cela fonctionne, example.co.uk doit utiliser rpId: 'example.com' dans ses appels d'API WebAuthn, et example.com doit héberger un fichier à l'adresse https://example.com/.well-known/webauthn pour autoriser example.co.uk :

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

example.co.uk peut ainsi créer et utiliser des clés d'accès associées à example.com.

6. Conclusion

Félicitations ! Vous avez configuré le partage continu d'identifiants.

Vos utilisateurs peuvent désormais enregistrer un mot de passe et une clé d'accès sur votre site Web et les utiliser pour se connecter à votre application Android en un seul geste (et vice versa). Cette simple modification peut augmenter considérablement vos taux de conversion de connexion et la satisfaction des utilisateurs.

Étape suivante