Aller au contenu principal

Autorisation d'application : le guide du développeur pour 2026

Apprenez les fondamentaux de l'autorisation d'application. Ce guide couvre OAuth 2.0, les bonnes pratiques de sécurité et les patterns d'implémentation pour les apps Capacitor & Electron.

Autorisation d'app : le guide du développeur pour 2026

Vous y êtes probablement déjà confronté. La connexion à l'app fonctionne, les utilisateurs peuvent s'identifier avec Google, Microsoft ou par e-mail, et l’API accepte un token. C'est là que les questions de fond commencent. Cet utilisateur peut-il voir les factures d'un autre compte ? L'app desktop doit-elle mettre un access token en cache localement ? Comment gérer le consentement dans un build Capacitor sans fuite d'état entre la webview et la couche native ?

C'est là que l'autorisation d'application cesse d'être une simple case à cocher et commence à peser sur la confiance dans le produit, la réponse aux incidents et les résultats des revues sur les stores. Dans les apps cross-platform, surtout avec Capacitor et Electron, la difficulté n'est pas de comprendre le concept d'autorisation. C'est de l'implémenter là où les hypothèses du navigateur ne tiennent plus, où le stockage sécurisé se comporte différemment selon la plateforme, et où les raccourcis côté client créent des risques côté serveur.

Table des matières

Ce que signifie vraiment l’autorisation d’app

Un utilisateur installe votre application, appuie sur « Continuer avec Google », se connecte avec succès, puis voit un écran de consentement lui demandant si l'application peut lire ses contacts ou ses données de calendrier. Ce moment illustre les deux facettes de l'accès. La connexion confirme l'identité. L'écran de consentement définit ce que l'application est autorisée à faire une fois l'identité établie.

Cette distinction piège encore bien des équipes. Authentification prouve qui est l'utilisateur. Autorisation décide de ce que l'utilisateur, la session ou l'application peut accéder. Un ID vous permet d'entrer dans le bâtiment. Une clé détermine quelles portes s'ouvrent.

Dans le développement d'applications, cette différence compte, car les équipes sécurisent souvent le flux de connexion puis négligent la conception de tout ce qui suit. Elles font trop confiance à un token, omettent les vérifications de permissions côté serveur, ou laissent le client piloter des règles d'accès qui devraient être définies dans une politique. C'est ainsi que « l'utilisateur est connecté » devient subtilement « l'utilisateur peut accéder à trop de choses ».

L'autorisation est le moment où la confiance devient concrète. Les utilisateurs ne veulent pas seulement que votre application sache qui ils sont. Ils veulent qu'elle ne touche qu'à ce qu'ils ont approuvé.

Il y a trois acteurs à distinguer :

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

En pratique, l'autorisation d'application recoupe aussi des contrôles d'accès plus stricts comme le MFA. En janvier 2023, environ 66 % des utilisateurs dans le monde utilisaient le MFA, et 83 % des plus de 1 000 professionnels IT de PME interrogés exigeaient le MFA pour accéder à toutes les ressources de l'entreprise, selon une enquête JumpCloud de 2024 according to Récapitulatif des statistiques MFA de JumpCloud. Cela ne remplace pas l'autorisation, mais cela relève le niveau de base pour savoir qui peut demander un accès dès le départ.

Si votre équipe définit les rôles, les scopes et l'accès délégué, ce guide sur comment le RBAC sécurise les live updates dans les apps Capacitor est un complément utile aux choix d'implémentation abordés ici.

Les piliers de l'autorisation

L'autorisation devient bien plus simple dès que vous cessez de la voir comme de la magie dans un token. Un meilleur modèle mental : un hôtel.

Une carte-clé d'hôtel est un bon modèle mental

Un client se présente à la réception et montre sa pièce d'identité. L'hôtel vérifie l'identité, crée un dossier de séjour et délivre une carte-clé. Cette carte ne prouve pas l'identité du client à chaque ouverture de porte. Elle confère l'autorisation d'accéder à des lieux précis pendant une durée limitée.

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

Un diagramme illustrant les concepts clés de l'autorisation, incluant l'utilisateur, la ressource, la politique, la décision et l'enforcer.

Le point important, c'est que la carte n'est pas la politique. Elle la reflète. Les portes ont toujours besoin d'un système qui vérifie si la carte doit ouvrir telle serrure précise. Côté logiciel, c'est votre passerelle API, votre middleware backend, votre moteur de politiques ou votre couche d'autorisation au niveau du service.

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

Principale
L'acteur qui demande l'accès. Généralement un utilisateur, mais il peut aussi s'agir d'un appareil, d'un job en arrière-plan ou d'un compte de service.

Ressource
L'élément protégé. Un projet, une facture, une route admin, un fichier, un endpoint API ou un enregistrement unique en base de données.

Périmètre
L'ensemble des actions demandées. Lire le profil. Envoyer des fichiers. Gérer la facturation. Les scopes doivent être restreints et compréhensibles.

Consentement
L'approbation de l'utilisateur pour un niveau d'accès demandé. Un bon écran de consentement rend la demande lisible. Les mauvais écrans demandent tout.

Token d'accès
L'identifiant que le client présente à un serveur de ressources une fois l'autorisation réussie. Il doit être traité comme une donnée sensible.

Beaucoup d’erreurs d’implémentation viennent du fait de tout réduire à une seule hypothèse : « l’utilisateur a un token, donc on le laisse entrer ». Ça ne tient pas la route en production. Un token peut être valide mais rester inadapté à l’action en cours, au tenant, à l’environnement ou à la ressource concernée.

Pour les équipes mobile et desktop, la gestion des tokens 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 sans précaution, votre politique, même bien pensée, ne vous sauvera pas le moment venu. Ce guide sur le stockage sécurisé des tokens pour les développeurs mobiles mérite d'être parcouru avant de déployer.

Une règle durable est simple. Gardez l'authentification, le consentement, l'émission de tokens et l'application des règles côté serveur séparés dans votre esprit et dans votre code. Les équipes qui les fusionnent finissent généralement par déboguer des bugs de permission dans la mauvaise couche.

Modèles et protocoles d'autorisation courants

Quand les équipes disent « on utilise OAuth », elles veulent souvent dire plusieurs choses différentes à la fois. Cela fait 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 concerne principalement 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 manipuler directement son mot de passe.

OpenID Connect, ou OIDC, s'appuie sur OAuth 2.0 et ajoute des informations d'identité. Concrètement, OAuth répond à « que peut faire cette application », tandis qu'OIDC aide à répondre à « qui s'est connecté ».

Cette différence compte dans les apps Capacitor et Electron, car beaucoup de bugs viennent de l'utilisation d'un ID token là où un access token est attendu, ou de l'idée qu'une connexion réussie signifie que l’API doit accorder chaque action en aval. Ce n'est pas le cas.

Si vous intégrez cela dans une application hybride, un guide pas à pas d'implémentation OAuth2 pour les applications Capacitor est le genre de ressource qui permet d'éviter beaucoup d'erreurs de flux.

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

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

Contrôle d'accès basé sur les rôles (RBAC) associe les permissions à des rôles comme admin, éditeur, agent de support ou lecteur. C'est courant car c'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 standard du secteur pour appliquer des permissions granulaires, et les sources citées indiquent que mettre en place le RBAC avec des structures de rôles hiérarchiques et des audits réguliers des permissions réduit les incidents de sécurité jusqu'à 40 % dans les environnements d'entreprise.

L'Attribute-Based Access Control (ABAC) prend ses décisions à partir d'attributs plutôt que de simples rôles. Cela peut inclure le département, l'état de l'appareil, la propriété d'un enregistrement, le niveau de compte, la zone géographique, l'heure de la requête ou le fait que la session ait validé le MFA. L'ABAC est plus expressif, mais il devient aussi plus facilement opaque si vous documentez mal vos politiques.

Règle pratique : Commencez par le RBAC lorsque les permissions de votre produit sont stables et lisibles. Ajoutez l'ABAC là où le contexte modifie réellement la décision.

RBAC vs ABAC en un coup d'œil

Critère Contrôle d'accès basé sur les rôles (RBAC) L'Attribute-Based Access Control (ABAC)
Idée centrale L'accès est accordé par rôle L'accès est accordé en évaluant des attributs
Le plus adapté Outils internes, dashboards, interfaces d'administration Applications multi-tenant, workflows réglementés, accès contextuel
Facilité de raisonnement Plus simple à comprendre pour les équipes et les auditeurs Plus flexible, mais plus difficile à déboguer
Gestion du changement Ajouter ou modifier des rôles Ajuster les politiques et les règles d'attributs
Mode de défaillance courant Role sprawl Prolifération des politiques et cas limites cachés
Exemple “Support agents can view tickets” « Les agents de support peuvent consulter les tickets des comptes de leur région pendant les créneaux actifs »

Il n’y a pas de prix pour le modèle le plus avancé. Le meilleur choix est celui que votre équipe peut appliquer de manière cohérente. Dans la plupart des bases de code produit, cela signifie utiliser le RBAC pour les limites d’accès générales et des attributs ciblés pour les exceptions, comme la propriété, le tenant ou l’état de l’appareil.

Anatomie d'un flux OAuth 2.0

Beaucoup d’explications sur OAuth restent trop longtemps abstraites. Dans une vraie app, l’ordre des étapes compte, surtout pour les clients publics comme Capacitor et les apps Electron, qui ne peuvent pas conserver un client secret en toute sécurité.

What happens when the user taps login

Un utilisateur ouvre votre app Capacitor et appuie sur « Se connecter avec GitHub ». L’app crée un code verifier PKCE et un code challenge dérivé, puis redirige l’utilisateur vers le serveur d’autorisation dans un navigateur système ou un onglet de navigateur sécurisé. L’app inclut aussi un paramètre state pour vérifier que la réponse correspond bien à la requête qu’elle a initiée.

Un schéma illustrant les huit étapes du flux d’autorisation OAuth 2.0 avec PKCE pour une authentification sécurisée des applications.

Côté serveur d’autorisation, l’utilisateur se connecte si nécessaire et approuve l’accès demandé. Le serveur redirige ensuite vers votre app avec un code d’autorisation, et non avec un credential de longue durée que vous pourriez utiliser directement. Votre app reçoit ce code via l’URI de redirection configurée.

L'application échange ensuite le code contre des tokens. PKCE est crucial dans ce processus. L'application envoie le code verifier d'origine avec le code d'autorisation. Le serveur le compare au code challenge précédent. S'ils correspondent, l'échange de tokens réussit. Si quelqu'un a intercepté le code mais n'a pas le verifier, l'échange échoue.

C'est pourquoi PKCE est essentiel pour les clients natifs et hybrides. Ces applications sont des clients publics. Partez du principe que des attaquants peuvent inspecter les bundles, faire de la rétro-ingénierie sur les chemins code, ou altérer l'état local. PKCE réduit l'un des risques les plus courants dans les flux basés sur les redirections.

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

Où les apps cross-platform posent généralement problème

Le protocole est simple. L'implémentation, elle, ne l'est souvent pas.

Les applications Capacitor échouent généralement à l'un de ces niveaux :

  1. Utiliser une webview intégrée pour la connexion au lieu du navigateur système. Cela peut compromettre la frontière de sécurité attendue et créer un comportement incohérent des cookies.
  2. Perdre l'état de redirection lorsque l'application revient du navigateur dans le shell natif.
  3. Stocker les tokens dans le stockage navigateur en clair car le projet a débuté comme une application web et l'équipe n'a jamais repensé le stockage pour le mobile.

Les applications Electron présentent des problématiques différentes. Les équipes laissent parfois le processus de rendu gérer trop de logique d'auth, exposent des tokens via l'IPC sans limites strictes, ou traitent l'app desktop comme un environnement de confiance. Ce n'est pas le cas. Une app desktop packagée exige toujours une mentalité de client hostile.

Le comportement du refresh mérite aussi d'être pensé avec soin. Les access tokens doivent expirer, les sessions doivent se rétablir proprement, et la logique de refresh ne doit pas créer de race conditions sur des requêtes concurrentes. Ce guide pour sécuriser le refresh de token est une excellente référence pour construire cette partie sans finir dans une boucle de retry ou un méli-mélo de sessions obsolètes.

Une habitude d'implémentation aide plus que la plupart : gardez le handshake OAuth isolé dans un petit module d'auth avec des entrées et sorties explicites. Ne dispersez pas la gestion des redirections, le parsing de tokens et la logique de refresh entre les composants, les hooks et divers utilitaires réseau.

Menaces de sécurité et bonnes pratiques essentielles

Les bugs d'autorisation paraissent rarement dramatiques lors d'une revue code. Ils ressemblent à des choix de confort. Un scope trop large ici, un token mis en cache là, un contrôle serveur manquant parce que l'UI cache déjà le bouton. Puis l'app est livrée et ces raccourcis deviennent la surface d'attaque.

Les défaillances qui reviennent sans cesse

L'écosystème mobile offre un signal d'alerte utile. Selon les statistiques de sécurité mobile de DeepStrike, 95 % des applications mobiles testées ont échoué sur au moins un contrôl’OWASP MASVS lié à l'authentification et à l'autorisation, et 85 % des applications mobiles analysées présentaient des failles de sécuritéVous n'avez pas besoin d'accepter tous les discours du marketing de la cybersécurité pour prendre l'essentiel au sérieux. Les erreurs d'autorisation sont courantes.

Une infographie intitulée Authorization Security Checklist détaillant neuf pratiques essentielles pour maintenir des contrôles d'accès sécurisés aux applications numériques.

Les patterns sont familiers :

  • Tokens fuités depuis un stockage non sécurisé, des logs, des rapports de crash ou un état accessible au renderer.
  • Scopes trop larges car tout demander est plus simple que de faire évoluer le consentement au fil du temps.
  • Contrôle côté client où l'application masque les actions non autorisées, mais l’API les accepte toujours.
  • Attaques par rejeu et redirection lorsque la validation du state, du PKCE ou de l'URI de redirection est négligée.
  • Dérive des permissions après que les équipes ont ajouté des rôles et des exceptions sans revue planifiée.

Si votre backend ne vérifie pas l'autorisation à chaque action protégée, vous n'avez pas d'autorisation d'application. Vous avez juste des indications d'interface.

Une checklist concrète qui tient la route

Utilisez le principe du moindre privilège par défaut, pas comme une tâche de nettoyage à faire plus tard. Dans les projets réels, cela signifie réduire ce que chaque token peut faire, réduire l'endroit où chaque token est stocké, et réduire la durée de validité de chaque identifiant.

  • Demander des scopes restreints : Demandez uniquement les permissions nécessaires à la fonctionnalité utilisée. Reportez le consentement si possible.
  • Imposer côté serveur : Considérez le client comme non fiable. Les boutons, les routes et les écrans cachés ne sont pas des frontières de sécurité.
  • Utiliser le stockage sécurisé de la plateforme : Sur mobile, utilisez l'accès au keychain natif ou au keystore via un plugin plutôt que le stockage local basique. Sur desktop, gardez les données sensibles hors de portée immédiate du renderer.
  • Valider le state et la gestion des redirections : The auth response must match the request your app initiated.
  • Faites expirer rapidement et rafraîchissez avec prudence : Les tokens d’accès à durée limitée limitent les dégâts en cas de fuite. La logique de refresh doit tourner proprement et échouer de manière sécurisée.
  • Révoquez si nécessaire : La fin de session et la réponse aux incidents doivent permettre d’invalider les tokens et de forcer la réauthentification.
  • Validez les entrées et protégez le transport : HTTPS, le certificate pinning quand c’est pertinent et la validation des entrées comptent tous, car l’authentification peut être contournée via des failles adjacentes.

Pour les équipes qui déploient des apps via les stores, la conception de l’authentification croise aussi l’exposition de API et la revue de conformité. Ce résumé de les normes de sécurité API pour la conformité aux stores s’intègre bien à votre checklist d’autorisation.

Un dernier point facile à manquer : le moindre privilège s’applique aussi aux outils internes. Le panneau d’administration, la console de support et l’application de staging finissent souvent avec les contrôles les plus laxistes de l’entreprise, alors qu’ils exposent généralement les actions les plus sensibles.

Patterns d'implémentation pour Capacitor et Electron

L'autorisation d'applications multiplateformes devient plus simple quand vous arrêtez de considérer votre app comme un simple navigateur avec un peu d'emballage en plus. Capacitor et Electron ont tous deux besoin de patterns qui respectent le stockage natif, les frontières entre processus et la gestion des redirections.

Un jeune développeur concentré travaille sur un ordinateur portable avec code sur des moniteurs, dans un bureau lumineux.

Les patterns Capacitor qui fonctionnent

Pour Capacitor, utilisez un plugin ou une bibliothèque d'auth qui prend en charge l'OAuth via le navigateur système avec PKCE et un callback deep-link ou app-link approprié. Des bibliothèques comme capacitor-oauth2 peut supprimer beaucoup de code superflu code, mais seulement si vous gardez le stockage des tokens et le comportement de refresh explicites.

Une structure pratique ressemble à ceci :

  • Coordinateur d'auth : Lance le login, suit l'état et gère le callback.
  • Service de tokens : Stocke les tokens via un stockage sécurisé natif, pas le stockage du navigateur.
  • Client API : Attachez les access tokens, tentez un refresh une fois, puis forcez la déconnexion en cas d'échec irrécupérable.
  • Backend avec gestion des politiques : Associe les claims du token aux contrôles d'autorisation côté serveur.

Vous voulez aussi des outils de session adaptés au cycle de vie d'une app hybride. Si vous évaluez les options pour cette couche, les plugins Capacitor pour une gestion sécurisée des sessions sont un bon point de départ pour comparer les approches.

Un rafraîchissement de token minimal 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)
}

L'important n'est pas la syntaxe, mais de centraliser le rafraîchissement pour que chaque écran n'invente pas son propre comportement de session.

Les patterns Electron qui demandent une vigilance accrue

Electron exige des frontières plus strictes. Gardez l'échange de tokens et le stockage sécurisé dans le processus principal quand c'est possible. Exposez des méthodes IPC ciblées au renderer plutôt que de lui confier des tokens bruts en espérant qu'il se comporte bien.

Les apps desktop semblent plus maîtrisables que les apps mobiles. Voyez cette impression comme un risque, pas comme une garantie.

Évitez ces raccourcis :

  • Ne stockez pas les tokens dans un stockage local accessible au renderer si vous pouvez l’éviter.
  • Don’t let every window share broad auth context sans vérifier la finalité de la fenêtre et la durée de la session.
  • Ne faites pas trop confiance aux scripts preload comme substitut à l’isolation des processus et aux frontières explicites de API.

La visibilité opérationnelle compte aussi. Selon l’aperçu de Splunk sur les exigences de sécurité applicative, l’autorisation applicative doit être intégrée à la surveillance et à la journalisation continues des activités, et les données de référence citées indiquent que les organisations qui journalisent et surveillent proactivement les événements d’autorisation détectent 95 % des tentatives d’accès non autorisées en moins de 15 minutes. En pratique, cela signifie journaliser les actions refusées, les échecs de rafraîchissement de token, les changements de rôle, les révocations de consentement et les accès inhabituels aux ressources.

Si votre processus de release inclut des mises à jour d’app hybride, une option dans cet écosystème est Capgo, qui fournit des live updates signées pour les applications Capacitor et Electron. Cela ne met pas en place l'autorisation à votre place, mais cela joue sur la vitesse à laquelle vous pouvez livrer des correctifs lorsque la logique d'auth, la gestion des redirections ou la code de session nécessitent une correction urgente.

Votre chemin vers une autorisation d’app sécurisée

Une bonne autorisation d'application n'est pas une décision unique. C'est une chaîne de décisions qui doivent toutes tenir la route ensemble. Vous authentifiez correctement l'utilisateur, ne demandez que l'accès dont vous avez besoin, échangez les tokens via un flux sécurisé comme OAuth 2.0 avec PKCE, stockez les secrets au bon endroit et appliquez les permissions côté serveur à chaque fois.

Ce qui compte le plus pour les équipes Capacitor et Electron, c'est la discipline aux frontières. Les raccourcis de l'ère du navigateur ne résistent pas au contact du stockage natif, des deep links, des limites de processus desktop ou des exigences de validation des apps. Les équipes qui évitent les ennuis ne font généralement rien d'exotique. Elles sont simplement rigoureuses sur les scopes, la gestion des sessions, les vérifications côté serveur et l'auditabilité.

Si votre configuration d'auth actuelle vous semble confuse, c'est normal. Commencez par renforcer une limite à la fois. Corrigez le flux. Corrigez le stockage. Sortez les règles d'accès de l'UI. Ajoutez des logs qui vous signalent quand quelqu'un demande quelque chose auquel il n'a pas droit.

Voilà comment une autorisation d'application sécurisée devient gérable. Pas plus simple en théorie. Plus sûre dans code.


Capgo aide les équipes à déployer des correctifs sur Capacitor et les applications Electron sans attendre la revue des stores, ce qui est essentiel lorsque vous devez corriger rapidement des flux d’authentification, la gestion des tokens ou des bugs de session. Si votre équipe souhaite un meilleur contrôle sur les releases multiplateformes, les déploiements progressifs ciblés et le support du rollback, Capgo mérite d’être évalué en parallèle de votre pile d’autorisation d’application.

Live updates pour les apps Capacitor

Lorsqu'un bug de la couche web est en ligne, déployez le correctif via Capgo au lieu d'attendre des jours l'approbation des stores. Les utilisateurs reçoivent la mise à jour en arrière-plan, tandis que les changements natifs suivent le circuit de validation habituel.

Les derniers articles du blog

Capgo vous offre les meilleures informations pour créer une application mobile vraiment professionnelle.