Passer au contenu principal

Authentification MCP

Les requêtes adressées au serveur Casdoor MCP sur /api/mcp sont authentifiées de la même manière que les requêtes adressées à l'API Casdoor. Cette page décrit comment un client découvre ce que le serveur exige, et comment chaque méthode d'authentification affecte les outils que le client peut appeler.

Découverte OAuth​

Casdoor publie les métadonnées de ressource protégée OAuth 2.0 (RFC 9728), afin qu'un client MCP puisse déterminer quel serveur d'autorisation protège le point de terminaison MCP :

curl https://your-casdoor.com/.well-known/oauth-protected-resource

La réponse indique le nom du serveur d'autorisation :

{
"resource": "https://your-casdoor.com",
"authorization_servers": ["https://your-casdoor.com"],
"bearer_methods_supported": ["header"],
"scopes_supported": ["openid", "profile", "email"]
}

Pour obtenir les métadonnées d'une application unique, placez le nom de l'application dans le chemin d'accès :

curl https://your-casdoor.com/.well-known/my-app/oauth-protected-resource

Utilisez le point de terminaison spécifique à l'application lorsque les applications ont des exigences d'autorisation différentes.

Méthodes d'authentification​

MethodTools that the client can callUse it for
Access tokenThe tools that the scopes of the token allow. See MCP authorization and scopesAutomation and MCP clients. This is the recommended method
Client ID and client secretThe tools that the application may useService accounts
Session cookieAll tools, without scope checksInteractive use in the browser

Avec un jeton d'accès :

curl -X POST https://your-casdoor.com/api/mcp \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Avec l'ID client et le secret client d'une application :

curl -X POST https://your-casdoor.com/api/mcp \
-u "CLIENT_ID:CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Requêtes non authentifiées​

Casdoor répond à une requête vers /api/mcp qu'il n'autorise pas, par exemple une requête sans identifiants, avec HTTP 401 et l'en-tête :

WWW-Authenticate: Bearer realm="casdoor", resource_metadata="https://your-casdoor.com/.well-known/oauth-protected-resource"

resource_metadata est l'URL des métadonnées de la ressource protégée sur l'hôte de la requête, incluant le chemin de base de Casdoor. Le schéma est http lorsque l'hôte ne contient pas de point, comme localhost:8000, et https sinon. Un client MCP qui suit la spécification OAuth 2.0 lit les métadonnées depuis cette URL et démarre seul le flux d'autorisation.

Le corps de la réponse dépend de la requête :

RequestResponse
A JSON-RPC request with an idHTTP 401 with a JSON-RPC error, whose data gives the reason
A JSON-RPC notification, without an idHTTP 202 with an empty body
A body that isn't JSON-RPC, such as a GET requestHTTP 401 with an empty body

Par exemple :

{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32001,
"message": "Unauthorized",
"data": "Unauthorized operation"
}
}

Le point de terminaison proxy d'un serveur MCP externe, /api/server/<organization>/<server-name>, répond de la même manière pour les requêtes GET et POST.

Voir aussi​