Passer au contenu principal

Approbation d'application : Guide du développeur pour 2026

Apprenez les fondamentaux de l'approbation d'application. Ce guide couvre OAuth 2.0, les meilleures pratiques de sécurité et les modèles d'implémentation pour les applications Capacitor & Electron.

Martin Donadieu

Martin Donadieu

Responsable de contenu

Approbation d'application : Guide du développeur pour 2026

Vous vous en occupez probablement déjà. L'authentification de l'application fonctionne, les utilisateurs peuvent se connecter avec Google, Microsoft ou par courriel, et le API accepte un jeton. Ensuite, les questions clés commencent. Ce utilisateur peut-il voir les factures d'un autre compte ? La version de bureau de l'application doit-elle stocker un jeton d'accès localement ? Comment gérer le consentement dans une version de build de Capacitor sans divulguer l'état entre la couche webview et la couche native ?

C'est là que l'approbation d'application cesse d'être un case à cocher et commence à affecter la confiance produit, la réponse aux incidents et les résultats de la revue des applications. Dans les applications cross-platform, surtout avec Capacitor et Electron, la partie difficile n'est pas de comprendre l'idée d'approbation. C'est d'implémenter cela dans les endroits où les hypothèses du navigateur ne s'appliquent plus, le stockage sécurisé se comporte différemment par plateforme et les raccourcis sur le client créent des risques côté serveur.

Table des matières

Ce que signifie vraiment l'autorisation de l'application

Lorsqu'un utilisateur installe votre application, appuie sur « Continuer avec Google », s'inscrit avec succès et obtient ensuite un écran de consentement demandant si l'application peut lire les contacts ou les données calendrier. Ce moment contient les deux côtés de l'histoire de l'accès. La connexion de l'utilisateur confirme son identité. L'écran de consentement définit ce que l'application est autorisée à faire après que son identité est connue.

Cette distinction fait encore tomber les équipes dans l'embarras. L'authentification démontre qui est l'utilisateur. Authentification La décision de ce que l'utilisateur, la session ou l'application peut accéder. Un ID vous permet d'entrer dans l'immeuble. Une clé détermine quels portes s'ouvrent.

Dans le travail d'application, cette différence compte car les équipes sécurisent souvent le flux de connexion et sous-conçoivent ensuite tout ce qui s'en suit. Ils font confiance à un jeton trop largement, ignorent les vérifications de permissions côté serveur ou laissent le client déterminer les règles d'accès qui devraient vivre dans la politique. C'est ainsi que « l'utilisateur est connecté » se transforme de manière subtile en « l'utilisateur peut accéder à trop de choses ».

L'authentification est là où la confiance devient concrète. Les utilisateurs ne s'inquiètent pas seulement de savoir que votre application connaît qui ils sont. Ils s'inquiètent de savoir qu'elle ne touche que ce qu'ils ont approuvé.

Il existe trois acteurs à distinguer :

  • L'utilisateur qui s'inscrit et peut accorder son consentement.
  • L'application qui demande l'accès au nom de l'utilisateur.
  • Le propriétaire des ressources ou API qui protège les données et applique la décision.

En pratique, l'authentification d'application se chevauche également avec des contrôles d'accès plus solides comme la MFA. Au 1er janvier 2023, environ 66% des utilisateurs mondiaux utilisaient la MFA, et 83% des plus de 1 000 professionnels IT de PME interrogés dans une enquête JumpCloud de 2024 exigeaient la MFA pour accéder à tous les ressources de l'entreprise selon le bilan statistique de la MFA de JumpCloud. Cela ne remplace pas l'autorisation, mais cela établit un niveau de base pour savoir qui peut demander l'accès en premier lieu.

Si votre équipe est en train de définir les rôles, les champs d'accès et l'accès délégué, cet aperçu des modèles d'accès à l'application est un compagnon utile aux choix d'implémentation discutés ici. Les Blocs de Construction de l'Authorization

L'autorisation devient beaucoup plus facile une fois que vous cessez de la traiter comme de la magie à l'intérieur d'un jeton. Un modèle mental plus approprié est un hôtel.

Un badge de clé d'hôtel est un bon modèle mental

.

A un hôte se rend au comptoir d'accueil et montre son identité. L'hôtel vérifie l'identité, crée un enregistrement de séjour et émet une carte d'accès. Cette carte ne prouve pas qui est l'hôte chaque fois qu'une porte s'ouvre. Elle porte la permission d'accéder à des endroits spécifiques pendant une période limitée.

Votre application fonctionne de la même manière.

Un diagramme illustrant les concepts de base de l'autorisation, y compris les composants utilisateur, ressource, politique, décision et enforcer.

L'important est que la carte n'est pas la politique. Elle reflète la politique. Les portes ont toujours besoin d'un système qui vérifie si la carte devrait ouvrir cette serrure spécifique. Dans les logiciels, c'est votre API gateway, middleware de backend, moteur de politique ou couche d'autorisation au niveau du service.

Les termes qui comptent dans les systèmes réels

Principal
L'acteur qui demande l'accès. Généralement un utilisateur, mais cela peut également s'agir d'un appareil, d'une tâche de fond ou d'un compte de service.

Resource
L'objet protégé. Un projet, une facture, une route administrative, un fichier, un API point de terminaison ou un seul enregistrement dans une base de données.

Scope
L'ensemble d'actions demandées. Lire le profil. Télécharger des fichiers. Gérer les factures. Les scopes doivent être étroits et compréhensibles.

Consentement
The approbation de l'utilisateur pour un niveau d'accès demandé. Les écrans de consentement de qualité font la demande lisible. Les mauvais demandent tout.

Jeton d'accès
Le credencial que le client présente à un serveur de ressources après une autorisation réussie. Il devrait être traité comme des données sensibles.

Un grand nombre d'erreurs d'implémentation proviennent de la compression de toutes celles-ci dans une seule hypothèse : « l'utilisateur a un jeton, alors laissez-les entrer ». Cela ne tient pas en production. Un jeton peut être valide mais toujours incorrect pour l'action actuelle, le locataire, l'environnement ou la ressource.

Pour les équipes de mobile et de bureau, le traitement des jetons mérite une attention particulière car le stockage fait partie du système d'autorisation, que vous le vouliez ou non. Si le client stocke les artefacts d'accès avec négligence, votre conception de politique ne vous sauvera pas plus tard. Cette guide sur le stockage de jetons sécurisé pour les développeurs mobiles est digne d'examen avant de lancer.

Une règle durable est simple. Gardez l'authentification, le consentement, l'émission de jetons et l'exécution côté serveur séparés dans votre tête et dans votre code. Les équipes qui les mélangent finissent généralement par déboguer des bugs de permission dans la couche incorrecte.

Modèles et protocoles d'autorisation courants

Lorsque les équipes disent « nous utilisons OAuth », elles ont souvent plusieurs choses en même temps. C'est partie de la confusion. Les protocoles et les modèles d'autorisation résolvent des problèmes différents.

Les protocoles gèrent la conversation

OAuth 2.0 est principalement axé sur l'autorisation déléguée. Il définit comment une application peut demander et recevoir la permission d'agir au nom d'un utilisateur sans gérer directement le mot de passe de l'utilisateur.

OpenID Connectou OIDC, se trouve au-dessus d'OAuth 2.0 et ajoute des informations d'identité. En termes pratiques, OAuth répond à la question « qu'est-ce que cette application peut faire », tandis que OIDC aide à répondre à la question « qui s'est connecté ».

Cette différence compte dans les applications Capacitor et Electron car beaucoup de bugs commencent par utiliser un jeton d'ID où un jeton d'accès est attendu, ou en supposant que la connexion réussie signifie que le API devrait accorder tous les actions ultérieures. Il ne devrait pas.

Si vous intégrerez cela dans une application hybride, un guide étape par étape une implémentation guide d'OAuth2 pour les applications Capacitor est le type de ressource qui prévient beaucoup de erreurs de flux évitables.

Les modèles gèrent la logique de décision

Dans votre propre système, vous avez toujours besoin de règles pour décider si l'accès devrait être accordé. C'est là que RBAC et ABAC Entrez.

Contrôle d'accès basé sur le rôle (RBAC) les permissions sont mappées à des rôles comme admin, éditeur, agent de support ou lecteur. C'est courant car il est compréhensible, auditable et relativement stable. Selon la discussion de BrightSec sur l'authentification et l'autorisation sécurisées, le RBAC est le mécanisme industriel standard pour appliquer des permissions détaillées, et les preuves citées dans ce document indiquent que l'implémentation du RBAC avec des structures de rôles hiérarchiques et des audits de permissions réguliers réduit les incidents de sécurité de jusqu'à 40% dans les environnements d'entreprise.

Contrôle d'accès basé sur les attributs (ABAC) prend des décisions en utilisant des attributs au lieu de seulement des rôles. Cela peut inclure le département, l'état du dispositif, la propriété du document, le niveau de compte, la géographie, l'heure de la demande ou si la session a passé la MFA. L'ABAC est plus expressif, mais il est également plus facile de rendre opaque si vous n'avez pas bien documenté la politique.

Conseil pratique : Commencez par le RBAC lorsque les permissions de votre produit sont stables et faciles à lire. Ajoutez l'ABAC où le contexte change effectivement la décision.

RBAC vs. ABAC en un coup d'œil

Critère Contrôle d'accès basé sur le rôle (RBAC) Contrôle d'accès basé sur les attributs (ABAC)
Idée centrale L'accès est accordé en fonction du rôle L'accès est accordé en évaluant les attributs
Meilleure correspondance Outils internes, tableaux de bord, panneaux d'administration Applications multi-locataires, flux de travail réglementés, accès sensible au contexte
Facilité de raisonnement Plus facile pour les équipes et les auditeurs de comprendre Plus flexible, mais plus difficile à déboguer
Gestion des changements Ajouter ou modifier des rôles Réglages et règles d'attribut
Mode de panne commun Étendue des rôles Étendue des politiques et cas d'extrémité cachés
Exemple “Les agents de support peuvent consulter des tickets” “Les agents de support peuvent consulter des tickets pour les comptes dans leur région pendant les horaires de service actifs”

La meilleure option n'est pas celle qui utilise le modèle le plus avancé. La meilleure option est celle que votre équipe peut appliquer de manière cohérente. Dans la plupart des bases de code de produits, cela signifie RBAC pour des limites d'accès larges et des attributs ciblés pour les exceptions telles que la propriété, le locataire ou l'état de l'appareil.

Anatomie d'un flux OAuth 2.0

Beaucoup d'explications d'OAuth restent abstraites trop longtemps. Dans une application réelle, la séquence compte, surtout pour les clients publics comme Capacitor et les applications Electron qui ne peuvent pas garder un secret client en toute sécurité.

What happens when the user taps connexion

Un utilisateur ouvre votre application Capacitor et appuie sur « Se connecter avec GitHub ». L'application crée un vérificateur de PKCE code et un défi dérivé code, puis envoie l'utilisateur vers le serveur d'autorisation dans un navigateur système ou une fenêtre de navigateur sécurisée. L'application inclut également un état pour vérifier que la réponse appartient à la demande qu'elle a initiée.

Un diagramme illustrant les huit étapes du flux d'autorisation OAuth 2.0 avec PKCE pour l'authentification des applications sécurisées.

Sur le serveur d'autorisation, l'utilisateur se connecte si nécessaire et approuve l'accès demandé. Le serveur redirige ensuite avec un code d'autorisation code, et non avec un jeton d'accès à long terme que vous pouvez utiliser directement. Votre application reçoit ce code code à travers l'URI de redirection configurée.

L'application échange ensuite le code code pour des jetons. PKCE est crucial dans ce processus. L'application envoie le vérificateur d'origine code ainsi que le code d'autorisation code. Le serveur le compare avec le défi code antérieur. Si ils correspondent, l'échange de jetons réussit. Si quelqu'un intercepte le code code mais n'a pas le vérificateur, l'échange échoue.

C'est pourquoi PKCE est essentiel pour les clients natifs et hybrides. Ces applications sont des clients publics. Vous devriez supposer que les attaquants peuvent inspecter les bundles, décompiler les chemins code ou modifier l'état local. PKCE réduit l'un des risques les plus courants dans les flux basés sur la redirection.

Voici un petit parcours si vous voulez un rappel visuel avant d'implémenter la séquence dans code :

Où les applications cross-platform cassent généralement

Le protocole est simple. La mise en œuvre ne l'est souvent pas.

Les applications Capacitor échouent généralement dans l'une de ces zones :

  1. Utiliser une vue web intégrée pour la connexion au lieu du navigateur système. Cela peut remettre en question la limite de sécurité attendue et créer un comportement de cookies incohérent.
  2. La perte de l'état de redirection lorsque l'application reprend depuis le navigateur dans la coquille native.
  3. Stockage de jetons en stockage de navigateur en clair puisque le projet a commencé comme une application web et l'équipe n'a jamais revisité le stockage pour les appareils mobiles.

Les applications Electron ont un ensemble de problèmes différents. Les équipes laissent parfois le processus de rendu gérer trop de logique d'authentification, exposent des jetons par le biais de l'IPC sans frontières strictes, ou traitent l'application de bureau comme un environnement fiable. Ce n'est pas le cas. Une application de bureau empaquetée a toujours besoin d'une mentalité de client hostile.

Le comportement de mise à jour mérite une conception délibérée. Les jetons d'accès devraient expirer, les sessions devraient se rétablir proprement et la logique de mise à jour ne devrait pas créer de conditions de course entre plusieurs requêtes concurrentes. Ce guide de flux de mise à jour de jetons sécurisé est une référence solide pour construire cette partie sans se retrouver dans un boucle de réessai ou un désordre de session dépassée.

Une bonne habitude de mise en œuvre aide plus que la plupart. Gardez l'échange OAuth isolé dans un petit module d'autorisation avec des entrées et des sorties explicites. N'éparpillez pas la gestion des redirections, l'analyse de jetons et la logique de mise à jour dans les composants, les hooks et les utilitaires de réseau aléatoires.

Menaces de sécurité et meilleures pratiques essentielles

Les bugs d'autorisation sont rares à regarder dramatiques dans code examen. Ils ressemblent à la commodité. Un large champ d'application ici, un jeton caché là, une vérification de serveur manquante parce que l'interface utilisateur cache déjà le bouton. Ensuite, l'application est livrée et ces raccourcis deviennent la surface d'attaque.

Les échecs qui continuent à se manifester

Le monde mobile donne un signal d'avertissement utile. Selon Les statistiques de sécurité mobile de DeepStrike indiquent que, 95% des applications mobiles testées ont échoué à au moins un contrôle OWASP MASVS lié à l'authentification et à l'autorisation, et 85% des applications mobiles analysées contenaient des failles de sécurité. Vous n'avez pas besoin d'accepter chaque cadre de la marketing de la sécurité pour prendre le signal de base au sérieux. Les erreurs d'autorisation sont courantes.

Un infographique intitulé Liste de vérification de sécurité d'autorisation détaillant neuf pratiques essentielles pour maintenir des contrôles d'accès sécurisés aux applications numériques.

Les modèles sont familiers:

  • Les jetons compromis à partir de stockages non sécurisés, de journaux, de rapports de crash ou d'état accessible au rendu.
  • Les champs d'accès trop larges car demander tout est plus facile que d'évoluer sur le consentement au fil du temps.
  • La mise en œuvre côté client où l'application cache les actions non autorisées mais le API les accepte toujours.
  • Les attaques de replay et de redirection lorsque la validation de l'état, de PKCE ou de l'URI de redirection est négligée.
  • La dérive des autorisations après que les équipes ajoutent des rôles et des exceptions sans examen programmé.

Si votre backend ne vérifie pas l'autorisation sur chaque action protégée, vous n'avez pas d'autorisation d'application. Vous avez des indices de l'interface utilisateur.

Un checklist pratique qui tient le coup

Utilisez le principe de moindre privilège par défaut, et non comme travail de nettoyage ultérieur. Dans les projets réels, cela signifie réduire ce que chaque jeton peut faire, réduire où chaque jeton vit, et réduire la durée pendant laquelle chaque crédential reste utile.

  • Demander des étendues étroites : Demander uniquement les autorisations nécessaires pour la fonctionnalité que l'utilisateur utilise en ce moment. Si l'application peut reporter le consentement, faites-le.
  • Appliquer sur le serveur : Considérer le client comme non fiable. Les boutons, les routes et les écrans cachés ne sont pas des limites de sécurité.
  • Utiliser un stockage sécurisé de la plateforme : Sur mobile, utilisez l'accès au keychain ou au keystore natif par le biais d'un plugin au lieu du stockage local en plain. Sur bureau, gardez les informations sensibles hors de la portée de l'exécuteur facile.
  • Valider l'état et la gestion de la redirection : La réponse d'authentification doit correspondre à la demande que votre application a initiée.
  • Expire de manière agressive et rafraîchir avec soin : Les jetons d'accès à vie courte limitent les dommages lorsqu'ils sont divulgués. La logique de rafraîchissement devrait tourner proprement et échouer fermement.
  • Révoquer lorsque nécessaire : La terminaison de session et la réponse aux incidents devraient inclure la capacité d'invalidation de jetons et de contrainte de réauthentification.
  • Valider les entrées et protéger le transport : HTTPS, fixation de certificats où cela est approprié, et validation d'entrées sont tous importants car l'autorisation peut être contournée par des faiblesses adjacentes.

Pour les équipes qui expédient des applications à travers des magasins, la conception d'authentification se croise également avec l'exposition de API et la revue de conformité. Cette synthèse des normes de sécurité de API pour la conformité des magasins d'applications API security standards for app store compliance Un point final qui est facile à manquer. Le principe de moindre privilège s'applique également aux outils internes. Le panneau d'administration, le console de support et l'application de mise en scène finissent généralement par avoir les contrôles les plus laxistes de la société, même si elles exposent souvent les actions les plus sensibles.

Modèles d'implémentation pour __CAPGO_KEEP_0__ et Electron

L'autorisation des applications cross-platform devient plus facile lorsque vous cessez de prétendre que votre application est juste un navigateur avec un emballage supplémentaire. Capacitor et Electron ont besoin de modèles qui respectent la stockage natif, les limites de processus et la gestion des redirections.

Un jeune développeur concentré travaillant sur un ordinateur portable avec Capacitor sur les moniteurs dans un environnement de bureau éclairé.

Les modèles de code qui fonctionnent

Pour Capacitor, utilisez un plugin ou une bibliothèque d'authentification qui prend en charge OAuth système-navigateur avec PKCE et une redirection profonde ou une app-link callback appropriée. Les bibliothèques comme

Capacitor capacitor-oauth2 Vous pouvez supprimer beaucoup de colle code, mais uniquement si vous maintenez toujours la stockage et le comportement de mise à jour de jeton explicites.

Une structure pratique ressemble à ceci :

  • Coordonnateur d'autorisation : Démarrer la connexion, suivre l'état, gérer le rappel.
  • Service de jeton : Stocke les jetons à l'aide d'un stockage sécurisé natif, et non du stockage du navigateur.
  • API client : Attache les jetons d'accès, réessaye une fois en cas de mise à jour, puis forcez la déconnexion en cas de failure irrecoverable.
  • Arrière-plan conforme à la politique : Map les revendications de jeton aux vérifications d'autorisation côté serveur.

Vous souhaitez également des outils de session qui conviennent à un cycle de vie d'application hybride. Si vous évaluez les options pour ce niveau, Capacitor plugins pour la gestion de session sécurisée est un bon endroit pour comparer les approches.

La forme minimale d'un token de rafraîchissement en pseudocode ressemble à ceci :

async function authorizedFetch(request) {
  let token = await tokenStore.getAccessToken()
  let response = await api(request, token)

  if (response.status !== 401) return response

  const refreshed = await auth.refresh()
  if (!refreshed) {
    await auth.signOut()
    throw new Error('Session expired')
  }

  token = await tokenStore.getAccessToken()
  return api(request, token)
}

La partie importante n'est pas la syntaxe. C'est de garder le rafraîchissement centralisé afin que chaque écran ne crée pas son propre comportement de session.

Les modèles Electron qui nécessitent une attention particulière

Electron nécessite des limites plus strictes. Gardez l'échange de jetons et le stockage sécurisé dans le processus principal lorsque possible. Exposez des méthodes d'IPC étroites au rendu au lieu de livrer des jetons bruts au rendu et d'espérer qu'il se comporte bien.

Les applications de bureau sentent plus contrôlables que les applications mobiles. Traitez ce sentiment comme un risque, et non comme une garantie.

Évitez ces raccourcis :

  • N'évitez pas de stocker les jetons dans un stockage local accessible au rendu. Si vous le pouvez.
  • N'autorisez pas chaque fenêtre à partager un contexte d'authentification large sans vérifier la finalité de la fenêtre et la durée de vie de la session.
  • N'ayez pas confiance trop en les scripts de préchargement. As une alternative à l'isolement du processus et aux limites explicites API.

La visibilité opérationnelle compte aussi. Selon l'aperçu de Splunk sur les exigences de sécurité des applications l'autorisation des applications devrait être intégrée à la surveillance continue des activités et à la journalisation, et les données de référence citées dans ce document indiquent que les organisations qui enregistrent et surveillent les événements d'autorisation de manière proactive détectent 95 % des tentatives d'accès non autorisées dans les 15 minutes.En pratique, cela signifie enregistrer les actions refusées, les échecs de mise à jour de jeton, les changements de rôle, les révocations de consentement et les modèles d'accès aux ressources inhabituels. Si votre processus de mise en production inclut des mises à jour d'applications hybrides, une option dans cet écosystème est __CAPGO_KEEP_0__qui fournit des mises à jour en temps réel signées pour les applications __CAPGO_KEEP_0__ et Electron. Cela ne met pas en œuvre l'autorisation pour vous, mais cela affecte la rapidité avec laquelle vous pouvez envoyer des correctifs lorsque la logique d'autorisation, la gestion des redirections ou les sessions __CAPGO_KEEP_1__ nécessitent une correction urgente.

Votre Chemin vers l'Authorization d'Application Sûre Capgo, which provides signed live updates for Capacitor and Electron apps. That doesn’t implement authorization for you, but it does affect how quickly you can ship fixes when auth logic, redirect handling, or session code needs urgent correction.

__CAPGO_KEEP_1__

__CAPGO_KEEP_0__

La partie qui compte le plus pour Capacitor et les équipes Electron est la discipline aux bords. Les raccourcis de la période de navigateur ne survivent pas au contact avec le stockage natif, les liens profonds, les limites de processus de bureau ou les exigences de revue d'applications. Les équipes qui restent hors de la difficulté ne font généralement rien d'exotique. Elles sont simplement consistantes sur les champs, la gestion de session, les vérifications côté serveur et la traçabilité.

Si votre configuration actuelle d'authentification vous semble embrouillée, c'est normal. Commencez par resserrer une limite à la fois. Fixez le flux. Fixez le stockage. Déplacez les règles d'accès hors de l'interface utilisateur. Ajoutez un journal qui vous indique quand quelqu'un demande quelque chose qu'il ne devrait pas avoir.

C'est ainsi que l'autorisation d'applications sécurisées devient gérable. Pas plus simple en théorie. Plus sûr dans code.


Capgo aide les équipes à envoyer des correctifs aux applications Capacitor et Electron sans attendre la revue de la boutique, ce qui compte lorsque vous devez corriger les flux d'authentification, la gestion de jetons ou les bogues de session rapidement. Si votre équipe souhaite avoir un contrôle plus serré sur les lancements cross-plateformes, les déploiements ciblés et le support de retrait, Capgo vaut la peine d'être évalué en parallèle de votre pile d'autorisation d'applications.

Mises à jour en temps réel pour les applications Capacitor

Lorsqu'une bug de la couche web est en ligne, expédiez la correction à travers Capgo au lieu de attendre des jours pour l'approbation de la boutique. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les changements natifs restent dans le chemin de revue normal.

Commencez maintenant

Dernières actualités de notre Blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile véritablement professionnelle.