Retour au développement d'API

Développement d'API

Sécurité des API

Qui peut appeler votre API et ce qu'il peut faire, contrôlé à chaque requête

OAuth 2.0 client identifiants, étape par étape

Order sync job
Microsoft Entra ID
Orders API

Sur le réseau

POST /{tenant}/oauth2/v2.0/token
grant_type=client_credentials
client_id=6f1c…e2a9
scope=api://orders/.default
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6…

Jeton d'accès décodé

  • iss•••••
  • aud•••••
  • exp•••••
  • roles•••••
  • azp•••••

Exemple illustratif

Une tâche en arrière-plan prouve son identité à Microsoft Entra ID, reçoit un jeton de courte durée et l'API le vérifie avant de renvoyer des données. Aucun mot de passe n'est transmis à l'API.

Mécanismes d'authentification

OAuth 2.0 et OpenID Connect

Protocoles standard de l'industrie pour l'autorisation et l'authentification. En savoir plus sur Microsoft Identity Platform.

  • Flow Authorization Code : Pour applications web avec backend
  • Flow Client Identifiants : Pour communication machine-à-machine
  • PKCE : Sécurité améliorée pour applications mobiles et SPA
  • Tokens JWT : Authentification sans état avec claims

Clés API

Authentification simple pour scénarios serveur-à-serveur :

  • Envoyer clé API dans l'en-tête : X-API-Key: your-key-here
  • Stocker les clés de manière sécurisée dans Azure Key Vault
  • Mettre en œuvre rotation et politiques d'expiration des clés
  • Utiliser des clés différentes pour dev, staging, production

Identités managées

Authentification Microsoft Entra ID sans identifiants dans le code :

  • Identités assignées au système pour les ressources Azure
  • Identités assignées par l'utilisateur pour ressources partagées
  • Acquisition et renouvellement automatiques des tokens
  • Fonctionne avec Azure SQL, Storage, Key Vault et plus

Modèles d'autorisation

Contrôle d'accès basé sur les rôles (RBAC)

Assigner des permissions basées sur les rôles utilisateur :

  • Définir les rôles : Admin, Manager, User, ReadOnly
  • Décorer les endpoints avec [Authorize(Roles = "Admin")]
  • Stocker les rôles dans les claims JWT ou base de données
  • Prise en charge de plusieurs rôles par utilisateur

Autorisation basée sur les claims

Autorisation fine basée sur les attributs utilisateur :

  • Vérifier claims spécifiques : département, localisation, âge
  • Autorisation basée sur politiques avec exigences personnalisées
  • Combiner plusieurs claims pour règles complexes

Bonnes pratiques de sécurité

Mesures de sécurité essentielles

  • HTTPS uniquement : Imposer TLS 1.2+ pour tout le trafic API
  • Validation d'entrée : Valider et assainir toutes les entrées utilisateur
  • Limitation de débit : Prévenir les abus avec politiques de throttling
  • CORS : Configurer correctement le cross-origin resource sharing
  • Prévention injection SQL : Utiliser des requêtes paramétrées
  • Protection XSS : Encoder la sortie, assainir l'entrée
  • Gestion des secrets : Ne jamais coder en dur les identifiants
  • En-têtes de sécurité : X-Frame-Options, CSP, HSTS

Prêt à construire des API fiables et bien documentées ?

Voyons ensemble comment notre expertise en développement d'API peut renforcer votre écosystème numérique avec des services sécurisés, capables de monter en charge et agréables à utiliser pour les développeurs.