Sécurité 2026-03-26

Sécuriser les connexions MCP avec OAuth : Guide complet

MCP Trail Team

MCP Trail Team

Équipe de sécurité

Sécuriser les connexions MCP avec OAuth : Guide complet

Sécuriser les connexions MCP avec OAuth : Guide complet

OAuth fournit une autorisation sécurisée et standardisée pour les connexions MCP. Ce guide couvre les modèles d’implémentation et les meilleures pratiques.

Pourquoi OAuth pour MCP ?

  • Sécurité standardisée : Protocole éprouvé par l’industrie
  • Accès basé sur les tokens : Pas d’identifiants dans les requêtes
  • Permissions granulaires : Contrôle d’accès basé sur les scopes
  • Délégation utilisateur : Permettre un accès limité sans partager les identifiants

Flux OAuth pour MCP

1. Requête d’autorisation

const authUrl = `https://auth.example.com/authorize?
  client_id=${clientId}
  &redirect_uri=${redirectUri}
  &response_type=code
  &scope=mcp:read mcp:write
  &state=${securityToken}`;

2. Échange de token

const tokenResponse = await fetch('https://auth.example.com/token', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: `grant_type=authorization_code
    &code=${authCode}
    &client_id=${clientId}
    &client_secret=${clientSecret}`
});

const { access_token, refresh_token } = await tokenResponse.json();

3. Requête MCP avec token

const mcpRequest = {
  tool: 'my_tool',
  arguments: args,
  authorization: `Bearer ${accessToken}`
};

Modèles d’implémentation

Serveur-à-serveur (Client Credentials)

Pour la communication machine-à-machine :

const serverAuth = {
  grant_type: 'client_credentials',
  client_id: 'mcp-server',
  client_secret: 'server-secret',
  scope: 'mcp:github mcp:jira'
};

Délégation utilisateur (Authorization Code)

Pour les actions initiées par l’utilisateur :

const userAuth = {
  grant_type: 'authorization_code',
  code: authCode,
  redirect_uri: callbackUrl,
  client_id: clientId
};

Gestion des tokens

Tokens de rafraîchissement

const refreshAccessToken = async (refreshToken) => {
  const response = await fetch(tokenEndpoint, {
    method: 'POST',
    body: `grant_type=refresh_token
      &refresh_token=${refreshToken}
      &client_id=${clientId}`
  });
  
  return response.json();
};

Révocation de token

const revokeToken = async (token) => {
  await fetch(revokeEndpoint, {
    method: 'POST',
    body: `token=${token}`
  });
};

Meilleures pratiques de sécurité

  1. Utiliser HTTPS : Toujours chiffrer le trafic
  2. Tokens de courte durée : Minimiser la durée de vie des tokens
  3. Stockage sécurisé : Stocker les tokens chiffrés
  4. Rotation régulière : Rafraîchir les tokens fréquemment
  5. Limitation des scopes : Demander les scopes minimums requis

Conclusion

OAuth fournit une sécurité robuste pour l’infrastructure MCP. Implémentez une gestion appropriée des tokens et suivez les meilleures pratiques de sécurité pour protéger vos systèmes IA.

Articles liés

Partager cet article