Présentation du fonctionnement des licences

La gestion des licences Google Play est un service réseau qui permet à une application d'interroger un serveur Google Play approuvé pour déterminer si l'application est distribuée sous licence à l'utilisateur actuel de l'appareil. Ce service repose sur la capacité du serveur de gestion des licences de Google Play à déterminer si un utilisateur donné dispose d'une licence pour utiliser une application donnée. Google Play considère qu'un utilisateur dispose d'une licence s'il fait partie des acheteurs enregistrés de l'application.

La requête commence lorsque votre application envoie une requête à un service hébergé par l'application cliente Google Play. L'application Google Play envoie ensuite une requête au serveur de gestion des licences et reçoit le résultat. Elle envoie le résultat à votre application, qui peut autoriser ou interdire son utilisation, selon les besoins.

Remarque : Si une version d'une application est dans un canal de test ouvert ou fermé, tous les utilisateurs autorisés à télécharger et à installer cette application sont considérés comme des utilisateurs disposant d'une licence. Pour en savoir plus, consultez la section Utiliser les canaux de test pour bénéficier des précieux commentaires des utilisateurs avant le lancement.

Figure 1. Votre application lance une vérification des licences via la bibliothèque LVL (License Verification Library) et le client Google Play, qui gère la communication avec le serveur Google Play.

Remarque : Auparavant, vous pouviez tester une application en important une version brouillon non publiée de celle-ci. Cette fonctionnalité n'est plus disponible. Vous devez désormais la publier dans les canaux de tests ouverts ou fermés. Pour en savoir plus, consultez la page Les versions brouillons d'applications ne sont plus acceptées.

Pour identifier correctement l'utilisateur et déterminer l'état de la licence, le serveur de gestion des licences requiert des informations sur l'application et l'utilisateur. Votre application et le client Google Play assemblent ces informations, et le client Google Play les transmet au serveur.

Pour vous aider à ajouter des licences à votre application, le SDK Android fournit un ensemble téléchargeable de sources de bibliothèques que vous pouvez inclure dans votre projet d'application : le package de licence Google Market. La bibliothèque LVL que vous pouvez ajouter à votre application gère toutes les communications liées aux licences avec le service de gestion des licences de Google Play. Une fois la bibliothèque LVL ajoutée à votre application, cette dernière peut déterminer l'état de sa licence pour l'utilisateur actuel en appelant simplement une méthode et en implémentant un rappel qui recevra la réponse spécifique à l'état.

Votre application n'interroge pas directement le serveur de gestion des licences, mais appelle le client Google Play via la communication IPC distante afin d'initier une demande de licence. Dans la demande de licence :

  • Votre application fournit son nom de package, un nonce qui sera ensuite utilisé pour valider toute réponse du serveur et un rappel via lequel la réponse peut être renvoyée de manière asynchrone.
  • Le client Google Play collecte les informations nécessaires sur l'utilisateur et l'appareil, telles que le nom d'utilisateur principal du compte Google de l'appareil, le code IMSI et d'autres informations. Il envoie ensuite la requête de vérification de la licence au serveur pour le compte de votre application.
  • Le serveur Google Play évalue cette requête à l'aide de toutes les informations disponibles pour tenter de déterminer l'identité de l'utilisateur avec un niveau de confiance suffisant. Il vérifie ensuite l'identité de l'utilisateur par rapport aux enregistrements d'achat de votre application et renvoie une réponse de licence, que le client Google Play renvoie à votre application via le rappel IPC.

Vous pouvez choisir quand et à quelle fréquence vous souhaitez que votre application vérifie sa licence. Vous avez un contrôle total sur le traitement de la réponse, la vérification des données de réponse signées et l'application des contrôles d'accès.

Notez que lors de la vérification des licences, votre application ne gère aucune connexion réseau et n'utilise aucune API liée aux licences sur la plate-forme Android.

Les réponses aux requêtes de vérification de licence sont sécurisées

Pour garantir l'intégrité de chaque requête de vérification de licence, le serveur signe les données de réponse à l'aide d'une paire de clés RSA partagée exclusivement entre le serveur Google Play et vous-même.

Le service de gestion des licences génère une seule paire de clés de licence pour chaque application et expose la clé publique sur la page Services et API de votre application dans la Play Console. Vous devez copier la clé publique à partir de la Play Console et l'intégrer au code source de votre application. Le serveur conserve la clé privée en interne et l'utilise afin de signer les réponses aux requêtes de licence pour les applications que vous publiez avec ce compte.

Lorsque votre application reçoit une réponse signée, elle vérifie les données à l'aide de la clé publique intégrée. L'utilisation de la cryptographie à clé publique dans le service de gestion des licences permet à l'application de détecter les réponses qui ont été falsifiées ou altérées.

Bibliothèque LVL (Licensing Verification Library)

Le SDK Android propose un package téléchargeable appelé "package de licence Google Market", qui inclut la bibliothèque LVL (License Verification Library). Cette bibliothèque simplifie considérablement le processus d'ajout de licences à votre application et permet de garantir une mise en œuvre plus sûre et plus robuste. Elle comprend des classes internes qui gèrent la plupart des opérations standards d'une requête de licence, comme contacter le client Google Play pour lancer une demande de licence, et vérifier et valider les réponses. Elle présente également des interfaces qui vous permettent d'intégrer facilement votre code personnalisé pour définir des règles d'attribution de licence et gérer l'accès selon les besoins de votre application. Voici les principales interfaces de la bibliothèque LVL :

Policy
Votre implémentation détermine si l'accès à l'application doit être autorisé en fonction de la réponse à la requête de licence envoyée par le serveur et de toutes les autres données disponibles (telles qu'un serveur backend associé à votre application). L'implémentation peut évaluer les différents champs de la réponse et appliquer d'autres contraintes, si nécessaire. Elle vous permet également de gérer les vérifications de licence qui entraînent des erreurs, telles que des erreurs réseau.
LicenseCheckerCallback
Votre implémentation gère l'accès à l'application en fonction du résultat de la gestion de la réponse par l'objet Policy. Votre implémentation peut gérer les accès comme vous le souhaitez, y compris en affichant le résultat de la licence dans l'interface utilisateur ou en invitant l'utilisateur à acheter l'application (s'il ne dispose pas encore de licence).

Pour vous aider à faire vos premiers pas avec Policy, la bibliothèque LVL fournit deux implémentations Policy complètes que vous pouvez utiliser sans y apporter de modifications ou que vous pouvez adapter à vos besoins :

ServerManagedPolicy
Règle (Policy) flexible utilisant les paramètres fournis par le serveur de gestion des licences afin de gérer la mise en cache des réponses et l'accès à l'application lorsque l'appareil est hors connexion (par exemple, lorsque l'utilisateur est en avion). Pour la plupart des applications, il est vivement recommandé d'utiliser ServerManagedPolicy.
StrictPolicy
Règle (Policy) restrictive qui ne met en cache aucune donnée de réponse et autorise uniquement l'accès à l'application lorsque le serveur renvoie une réponse confirmant que l'utilisateur a une licence.

La bibliothèque LVL est disponible en tant que package téléchargeable du SDK Android. Ce package inclut à la fois le LVL lui-même et un exemple d'application qui montre comment la bibliothèque doit être intégrée à votre application, et comment celle-ci doit gérer les données de réponse, les interactions avec l'interface utilisateur et les conditions d'erreur.

Les sources LVL sont fournies en tant que projet de bibliothèque Android. Vous pouvez ainsi gérer un seul ensemble de sources de bibliothèque et les partager entre plusieurs applications. Un environnement de test complet est également disponible via le SDK, ce qui vous permet de développer et de tester l'implémentation des licences dans vos applications avant de les publier, même si vous n'avez pas accès à un appareil physique.

Conditions requises et limites

La gestion des licences Google Play est conçue pour vous permettre d'appliquer des contrôles de licence aux applications que vous publiez via Google Play. Ce service n'est pas destiné à contrôler l'accès aux applications qui ne sont pas publiées sur Google Play ou qui s'exécutent sur des appareils qui ne proposent pas le client Google Play.

Voici quelques points à retenir lorsque vous mettez en œuvre la gestion des licences dans votre application :

  • Une application ne peut utiliser le service que si le client Google Play est installé sur son appareil hôte et si cet appareil est équipé d'Android 1.5 (niveau d'API 3) ou version ultérieure.
  • Pour effectuer une vérification des licences, le serveur de gestion des licences doit être accessible sur le réseau. En l'absence de connectivité réseau, vous pouvez implémenter des comportements de mise en cache de licences pour gérer l'accès à votre application.
  • La sécurité des contrôles de licence de votre application dépend de la conception de votre implémentation. Le service fournit les éléments de base qui vous permettent de vérifier les licences de manière sécurisée, mais c'est à vous qu'il revient d'appliquer et de gérer les licences. Suivez les bonnes pratiques décrites dans les documents suivants pour vous assurer que votre implémentation est sécurisée.
  • L'ajout de licences à une application n'affecte pas son fonctionnement lorsqu'elle est exécutée sur un appareil qui ne propose pas Google Play.
  • Vous pouvez implémenter des contrôles de licence pour une application sans frais, mais uniquement si vous utilisez le service pour fournir des fichiers d'extension pour APK.

Remplacement de la fonctionnalité de protection contre la copie

La gestion des licences Google Play est un mécanisme flexible et sécurisé permettant de contrôler l'accès à vos applications. Ce service remplace efficacement le mécanisme de protection contre la copie (qui n'est plus disponible) auparavant proposé sur Google Play, et vous donne la possibilité d'élargir la distribution de vos applications.

La gestion des licences vous permet de passer à un modèle applicable sur tous les appareils ayant accès à Google Play. L'accès n'est pas lié aux caractéristiques de l'appareil hôte, mais à votre application sur Google Play (via la clé publique de l'application) et à la règle de licence que vous définissez. Votre application peut être installée et gérée sur n'importe quel appareil, sur n'importe quel espace de stockage, y compris une carte SD.

Bien qu'aucun mécanisme de licence ne puisse complètement empêcher toute utilisation non autorisée, le service de gestion des licences vous permet de contrôler les accès pour la plupart des cas d'utilisation standards, sur tous les appareils compatibles, qu'ils soient verrouillés ou non.

Pour commencer à ajouter des licences à votre application, passez à la section Configurer la gestion des licences.