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 meilleures pratiques de sécurité et les patterns d'implémentation pour les apps Capacitor & Electron.

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

Vous y êtes probablement déjà confronté. La connexion fonctionne, les utilisateurs peuvent s'identifier via Google, Microsoft ou e-mail, et l’API accepte un token. C'est alors que les questions cruciales surgissent. 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 pour impacter la confiance envers le produit, la réponse aux incidents et les résultats de la revue 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 s'appliquent 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 of Contents

What App Authorization Really Means

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 son 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é connue.

Cette distinction induit encore les équipes en erreur. 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 est cruciale car les équipes sécurisent souvent le flux de connexion, puis sous-estiment tout ce qui suit. Elles accordent une confiance trop large à un token, sautent les vérifications de permissions côté serveur, ou laissent le client gérer des règles d'accès qui devraient figurer dans une politique. C'est ainsi que le concept de « l'utilisateur est connecté » se transforme subtilement en « l'utilisateur a trop d'accès ».

Authorization is where trust becomes concrete. Users don’t just care that your app knows who they are. They care that it only touches what they approved.

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 rejoint 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 % de plus de 1 000 professionnels IT de PME interrogés exigeaient le MFA pour accéder à toutes les ressources de l'entreprise dans une enquête JumpCloud de 2024 according to Récapitulatif des statistiques MFA de JumpCloud. Cela ne remplace pas l'autorisation, mais cela élève le niveau d'exigence pour déterminer qui peut, dès le départ, demander un accès.

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 une magie enfermée dans un token. Un meilleur modèle mental : l'hôtel.

Une carte magnétique 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 magnétique. Cette carte ne prouve pas qui est le client chaque fois qu'une porte s'ouvre. Elle porte l'autorisation d'accéder à certains lieux pendant une durée limitée.

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

Un diagramme illustrant les concepts clés de l'autorisation : utilisateur, ressource, politique, décision et composants d'exécution.

Le point important 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 cette serrure précise. Côté logiciel, ce sont votre passerelle API, votre middleware backend, votre moteur de politiques ou votre couche d'autorisation au niveau des services.

Les termes essentiels des systèmes réels

Principal
L'acteur qui demande l'accès. Généralement un utilisateur, mais cela peut aussi être un appareil, un job en arrière-plan ou 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 explicites.

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

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

Beaucoup d'erreurs d'implémentation viennent du fait de tout résumer en une seule hypothèse : « l'utilisateur a un token, donc laissez-l’entrer ». Cela ne tient pas en production. Un token peut être valide mais inapproprié pour l'action, le tenant, l'environnement ou la ressource actuelle.

Pour les équipes mobiles et desktop, la gestion des tokens mérite une attention particulière car le stockage fait partie intégrante du système d'autorisation, que vous le vouliez ou non. Si le client stocke les artefacts d'accès négligemment, la conception de votre politique ne vous sauvera pas plus tard. Ce guide sur le stockage sécurisé des tokens pour les développeurs mobiles vaut le détour avant de déployer.

Une règle durable est simple. Gardez l'authentification, le consentement, l'émission de tokens et l'application 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 contribue à 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 est cruciale dans les apps Capacitor et Electron, car de nombreux bugs proviennent 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 étape par étape d'implémentation OAuth2 pour les applications Capacitor est le type de ressource qui évite bien des erreurs de flux évitables.

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.

Le Role-Based Access Control (RBAC) associe des permissions à des rôles tels qu'admin, éditeur, agent de support ou lecteur. C'est une méthode courante car elle 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 fines, et les preuves citées 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é jusqu'à 40 % dans les environnements d'entreprise.

L'Attribute-Based Access Control (ABAC) prend des 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é par évaluation d'attributs
Meilleure option Outils internes, dashboards, panels d'administration Apps 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 du support peuvent voir les tickets des comptes de leur région pendant leurs shifts actifs »

Choisir le modèle le plus avancé n'est pas forcément une victoire. Le meilleur choix est celui que votre équipe peut appliquer de manière cohérente. Dans la plupart des bases de code, cela signifie utiliser le RBAC pour les limites d'accès larges 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 abstraites trop longtemps. Dans une application réelle, la séquence est cruciale, surtout pour les clients publics comme Capacitor et les apps Electron qui ne peuvent pas stocker un client secret en toute sécurité.

Que se passe-t-il quand l'utilisateur appuie sur login

Un utilisateur ouvre votre application Capacitor et appuie sur « Connexion 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 via un navigateur système ou un onglet sécurisé. L'app inclut également un état pour vérifier que la réponse correspond bien à la requête initiée.

Un diagramme illustrant les huit étapes du flux d'autorisation OAuth 2.0 avec PKCE pour l'authentification sécurisée d'une application.

Au niveau du 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, et non avec un identifiant à longue durée de vie utilisable directement. Votre app reçoit ce code via l'URI de redirection configurée.

L'application échange ensuite le code contre des tokens. Le PKCE est crucial dans ce processus. L'application envoie le code verifier original avec l'autorisation code. Le serveur le compare au code challenge précédent. S'ils correspondent, l'échange de tokens réussit. Si quelqu'un intercepte le code sans posséder le verifier, l'échange échoue.

C'est pourquoi le PKCE est essentiel pour les clients natifs et hybrides. Ces applications sont des clients publics. Vous devez partir 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. Le PKCE réduit l'un des risques les plus courants dans les flux basés sur la redirection.

Voici un bref rappel visuel si vous souhaitez vous rafraîchir la mémoire avant d'implémenter la séquence dans code :

Là où les apps cross-platform échouent généralement

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

Les apps 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 repasse du navigateur à la coquille native.
  3. Stocker les tokens en clair dans le stockage du navigateur 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 un ensemble de problèmes différents. 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'application desktop comme un environnement de confiance. Ce n'est pas le cas. Une application desktop packagée nécessite toujours une approche de client hostile.

Le comportement du rafraîchissement mérite également une conception réfléchie. 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 lors de requêtes concurrentes. Ce Guide pour sécuriser le refresh de vos tokens est une excellente référence pour construire cette partie sans finir dans une boucle de retry ou un chaos de sessions obsolètes.

Une habitude d'implémentation est plus utile que les autres : 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 des utilitaires réseau aléatoires.

Menaces de sécurité et bonnes pratiques essentielles

Les bugs d'autorisation paraissent rarement dramatiques lors d'une revue code. Ils ressemblent à du 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 déployée et ces raccourcis deviennent la surface d'attaque.

Les échecs 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é à 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 tout le marketing sécuritaire pour prendre le signal 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 schémas sont familiers :

  • Tokens fuités depuis un stockage non sécurisé, les logs, les rapports de crash ou l'état accessible par le 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 de l'état, 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 seulement des indices d'interface.

Une checklist pratique et robuste

Appliquez le principe du moindre privilège par défaut, et non comme un nettoyage ultérieur. Dans les projets réels, cela signifie restreindre ce que chaque token peut faire, restreindre l'endroit où chaque token réside et restreindre la durée de validité de chaque identifiant.

  • Demandez des scopes restreints : Ne demandez que les permissions nécessaires à la fonctionnalité utilisée par l'utilisateur à l'instant T. Si l'application peut différer le consentement, faites-le.
  • Appliquez les règles côté serveur : Considérez le client comme non fiable. Les boutons, les routes et les écrans cachés ne sont pas des barrières de sécurité.
  • Utilisez le stockage sécurisé de la plateforme : Sur mobile, utilisez l'accès natif au keychain ou au keystore via un plugin plutôt que le simple local storage. Sur desktop, empêchez le renderer d'accéder facilement aux données sensibles.
  • Validez l'état et la gestion des redirections : La réponse d'auth doit correspondre à la requête initiée par votre application.
  • Expirez de manière agressive et rafraîchissez avec prudence : Les access tokens à courte durée limitent les dégâts en cas de fuite. La logique de refresh doit assurer une rotation propre et un échec sécurisé.
  • Révoquez quand c'est nécessaire : La fin de session et la réponse aux incidents doivent inclure la capacité d'invalider les tokens et de forcer la réauthentification.
  • Validez les entrées et protégez le transport : L'HTTPS, le certificate pinning si nécessaire et la validation des entrées sont essentiels, car l'autorisation peut être contournée via des failles adjacentes.

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

Un dernier point facile à oublier. Le principe du moindre privilège s'applique aussi aux outils internes. Le panel admin, la console de support et l'app de staging finissent souvent avec les contrôles les plus souples de l'entreprise, alors qu'ils exposent souvent les actions les plus sensibles.

Patterns d'implémentation pour Capacitor et Electron

L'autorisation d'applications multiplateformes devient plus simple quand on arrête de prétendre que son app est juste un navigateur avec un packaging en plus. Capacitor et Electron nécessitent tous deux des patterns qui respectent le stockage natif, les limites de processus et la gestion des redirections.

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

Des patterns Capacitor qui fonctionnent

Pour Capacitor, utilisez un plugin ou une bibliothèque d'auth qui supporte l'OAuth via le navigateur système avec PKCE et un callback par deep-link ou app-link approprié. Des bibliothèques comme capacitor-oauth2 peut supprimer beaucoup de code superflu code, mais seulement si vous conservez un stockage de token et un 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 le stockage sécurisé natif, pas le stockage du navigateur.
  • Client API : Attachez les access tokens, tentez une reconnexion lors du refresh, puis forcez la déconnexion en cas d'échec irrécupérable.
  • Backend sensible aux politiques : Associe les claims du token aux contrôles d'autorisation côté serveur.

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

Voici à quoi ressemble une structure minimale de rafraîchissement de token en pseudocode :

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'essentiel n'est pas la syntaxe. Il s'agit de centraliser le refresh pour éviter que chaque écran n'invente son propre comportement de session.

Patterns Electron nécessitant une attention particulière

Electron nécessite des limites plus strictes. Gardez l'échange de tokens et le stockage sécurisé dans le processus principal dès que possible. Exposez des méthodes IPC restreintes au renderer plutôt que de lui transmettre des tokens bruts en espérant qu'il se comporte bien.

Les apps desktop semblent plus contrôlables que les apps mobiles. Considérez ce sentiment comme un risque, pas comme une garantie.

Évitez ces raccourcis :

  • Ne stockez pas de tokens dans le local storage accessible au renderer si vous le pouvez.
  • Ne laissez pas chaque fenêtre partager un contexte d'auth étendu sans vérifier l'usage de la fenêtre et la durée de la session.
  • Ne faites pas une confiance aveugle aux scripts de preload en remplacement de l'isolation des processus et des limites API explicites.

La visibilité opérationnelle est également cruciale. Selon l'aperçu de Splunk sur les exigences de sécurité applicative, l'autorisation applicative doit être intégrée à une surveillance et un logging continus de l'activité ; les données de référence indiquent que les organisations qui loguent et surveillent les événements d'autorisation de manière proactive détectent 95 % des tentatives d'accès non autorisées en moins de 15 minutesEn pratique, cela signifie enregistrer 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'apps hybrides, une option dans cet écosystème est Capgo, qui fournit des live updates signés pour les applications Capacitor et Electron. Cela n'implémente pas l'autorisation pour vous, mais cela affecte la rapidité avec laquelle vous pouvez déployer des correctifs lorsque la logique d'auth, la gestion des redirections ou la code de session nécessite une correction urgente.

Your Path to Secure App Authorization

Une bonne autorisation d'application n'est pas une décision unique. C'est une chaîne de décisions qui doivent toutes tenir ensemble. Vous authentifiez l'utilisateur correctement, ne demandez que l'accès nécessaire, é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 limites du système. Les raccourcis de l'ère du navigateur ne survivent pas au contact du stockage natif, des deep links, des limites de processus desktop ou des exigences de révision des apps. Les équipes qui évitent les ennuis ne font généralement rien d'exotique. Elles sont simplement cohérentes sur les scopes, la gestion des sessions, les vérifications côté serveur et l'auditabilité.

Si votre configuration d'auth actuelle 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 indiquent quand quelqu'un demande quelque chose qu'il ne devrait pas avoir.

C'est ainsi que l'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 les apps Capacitor et Electron sans attendre la validation des stores, ce qui est crucial pour corriger rapidement les flux d'auth, la gestion des tokens ou les bugs de session. Si votre équipe souhaite un contrôl’accru sur les releases multiplateformes, les déploiements progressifs ciblés et le support du rollback, Capgo vaut la peine d'être évalué avec votre stack d'autorisation d'app.

Live updates pour les apps Capacitor

Quand un bug de la couche web est en production, 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 apporte les meilleures informations pour créer une application mobile vraiment professionnelle.