Authentification OAuth MCP
Connecte Bob Shell aux serveurs MCP nécessitant un accès délégué par l'utilisateur avec OAuth 2.1. Bob Shell gère le processus d'authentification et de rafraîchissement des tokens afin que tu n'aies pas besoin de gérer les tokens manuellement.
Pour la configuration générale de MCP, consulte Configurer les serveurs MCP.
Vue d'ensemble
Tu peux connecter Bob Shell à des serveurs Model Context Protocol (MCP) qui agissent en ton nom, par exemple pour accéder à tes dépôts de code, tes ressources cloud ou tes services d'entreprise. Ces serveurs utilisent OAuth 2.1 afin que tu puisses te connecter et approuver l'accès.
Bob Shell gère directement le flux d'authentification. Lorsque tu configures un serveur nécessitant OAuth, Bob Shell ouvre une fenêtre d'autorisation dans ton navigateur par défaut. Après ta connexion et l'approbation des autorisations, Bob Shell stocke et rafraîchit tes tokens d'accès sans que tu aies besoin de manipuler des identifiants manuellement.
Utilise OAuth quand :
- Tu dois accéder à des ressources associées à ton compte utilisateur personnel ou d'entreprise
- Le serveur utilise des tokens de courte durée qui nécessitent un rafraîchissement automatique des tokens
- Tu souhaites garder les identifiants et secrets statiques en dehors de tes fichiers de configuration
Lorsque tu disposes déjà d'un token d'API statique ou d'un jeton d'accès personnel qui n'expire pas, tu peux utiliser à la place un token Bearer dans headers.
Comment fonctionne le flux d'authentification
- Tu ajoutes l'URL du serveur MCP distant à ton fichier de configuration sans identifiants
headersouenv. - Lorsque Bob Shell se connecte au serveur, Bob Shell détecte les exigences OAuth.
- Bob Shell ouvre une fenêtre de connexion de navigateur où tu vérifies les autorisations demandées et approuves l'accès.
- Bob Shell reçoit les tokens d'autorisation et les stocke de manière sécurisée d'une session à l'autre.
- Bob Shell rafraîchit automatiquement les tokens avant leur expiration afin que tu puisses travailler sans interruption.
Bob Shell Authorization Server MCP Server
| | |
|-- connect to server ---------->| |
|<-- OAuth metadata (401) -------| |
|-- open auth prompt ----------->| |
| (user signs in & consents) | |
|<-- authorization code ---------| |
|-- exchange for tokens -------->| |
|<-- access + refresh tokens ----| |
|-- authenticated requests ---------------------------------> |
| (auto-refresh when needed) |Configurer un serveur compatible OAuth
Tu peux configurer tes serveurs MCP soit dans ta configuration globale (~/.bob/mcp_settings.json), soit dans la configuration de ton projet (.bob/mcp.json).
Configuration minimale (découverte automatique)
Lorsque ton serveur MCP propose la découverte automatique des métadonnées OAuth, tu n'as besoin de spécifier que l'url :
{
"mcpServers": {
"my-oauth-server": {
"url": "https://mcp.example.com/mcp"
}
}
}Bob Shell détecte les exigences OAuth lors de la connexion et te guide tout au long du processus de connexion dans le navigateur.
Paramètres OAuth personnalisés
Lorsque ton fournisseur d'identité requiert un ID client préenregistré, des scopes personnalisés ou un secret client, configure l'objet oauth :
{
"mcpServers": {
"my-oauth-server": {
"url": "https://mcp.example.com/mcp",
"oauth": {
"enabled": true,
"clientId": "your-client-id-from-idp",
"clientSecret": "your-client-secret-if-required",
"scope": "mcp:connect read:data"
}
}
}
}Propriétés de configuration
| Propriété | Type | Description |
|---|---|---|
url | string | URL du point de terminaison MCP distant (obligatoire). |
oauth.enabled | boolean | Définis sur false pour désactiver OAuth, ou true pour exiger OAuth. Activé par défaut lorsqu'aucun en-tête Authorization n'est présent. |
oauth.clientId | string | ID client OAuth préenregistré émis par ton fournisseur d'identité. |
oauth.clientSecret | string | Secret client OAuth, si ton serveur d'autorisation en requiert un pour les clients confidentiels. |
oauth.scope | string | Liste séparée par des espaces des scopes OAuth que tu souhaites demander. |
L'ajout d'un en-tête Authorization statique à la configuration d'un serveur MCP désactive OAuth. Lorsqu'un en-tête Authorization est présent, Bob Shell n'initie pas le flux OAuth. Lorsque OAuth est actif, Bob Shell supprime les en-têtes Authorization statiques avant d'envoyer des requêtes. N'utilise qu'une seule méthode d'authentification par serveur.
Enregistrer Bob auprès de ton fournisseur d'identité
Lorsque ton fournisseur d'identité (IdP) exige que tu enregistres Bob en tant qu'application cliente avant de te connecter, utilise les paramètres d'application suivants :
| Paramètre | Valeur |
|---|---|
| Type d'application ou de client | Public, Natif ou Bouclage (Code d'autorisation avec PKCE) |
| URI de redirection | http://127.0.0.1:33418/callback |
| URIs de redirection supplémentaires | http://127.0.0.1:33419/callback à http://127.0.0.1:33427/callback (recommandé si le port 33418 est utilisé) |
| Types de grant | Code d'autorisation (authorization_code) et Jeton de rafraîchissement (refresh_token) |
| Scopes | Scopes spécifiés dans la documentation de ton serveur MCP |
Copie l'ID client émis dans oauth.clientId dans ton fichier de configuration.
S'authentifier lorsque demandé
Lorsque tu te connectes à un serveur compatible OAuth pour la première fois :
- Une fenêtre de navigateur s'ouvre avec l'invite d'autorisation.
- Vérifie les autorisations demandées par le serveur.
- Connecte-toi à ton compte et approuve l'accès.
- Bob Shell enregistre tes identifiants et se connecte automatiquement aux outils du serveur.
Dépannage
L'invite d'authentification ne s'ouvre pas
- Vérifie que tu n'as pas marqué le serveur comme désactivé dans ta configuration.
- Vérifie que ton fichier de configuration n'inclut pas d'en-tête
Authorizationstatique dansheaders. - Redémarre Bob Shell pour relancer la connexion.
- Vérifie que ton navigateur ou pare-feu ne bloque pas les connexions de bouclage local sur
127.0.0.1.
Le fournisseur d'identité renvoie une erreur d'incompatibilité d'URI de redirection
- Vérifie que l'enregistrement du client de ton fournisseur d'identité inclut
http://127.0.0.1:33418/callback. - Si le port 33418 est occupé, enregistre des ports supplémentaires de
33419à33427.
L'authentification réussit mais le serveur ne parvient pas à se connecter
- Vérifie que l'URL du serveur est correcte et accessible depuis ton réseau.
- Vérifie que tu as approuvé tous les scopes requis lors de l'étape de connexion.
- Consulte les journaux du serveur ou la documentation pour les rôles utilisateur ou autorisations prérequis.
Les tokens expirent fréquemment et tu dois te réauthentifier
- Confirme que ton serveur d'autorisation émet des tokens de rafraîchissement.
- Vérifie que l'horloge de ton système est synchronisée pour éviter une expiration prématurée des tokens.
Tu veux te déconnecter ou changer de compte
Supprime ou renomme l'entrée du serveur dans ton fichier de configuration et ajoute-la à nouveau. Bob Shell la traite comme un nouveau serveur et t'invite à te connecter lors de la prochaine connexion.