跳到主内容

MCP authentication

OAuth发现

Casdoor 支持 RFC 9728 OAuth 2.0 受保护资源元数据,以便 MCP 客户端能够发现身份验证要求。 查询已知端点:

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

响应指示哪个OAuth授权服务器保护MCP资源:

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

对于特定于应用程序的发现,请附加应用程序名称:

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

这会返回针对特定应用程序的元数据,当不同应用程序具有不同的授权要求时,此功能非常有用。

身份验证方法

MCP 请求必须使用【公共 API 身份验证】(/docs/basic/public-api)。 您选择的身份验证方法会影响您可以访问的工具。

使用带有作用域的访问令牌(推荐用于自动化):

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"}'

访问令牌实施基于作用域的授权。 您可以使用的工具取决于颁发该令牌时所授予的作用域。 这种方法可让您为特定任务创建具有有限权限的令牌。

使用客户端凭据(适用于服务账户):

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"}'

使用会话身份验证(用于交互式使用):

通过浏览器Cookie进行的基于会话的身份验证可授予对所有工具的访问权限,且无范围限制。 此方法旨在用于交互式使用,并保持与现有工作流的兼容性。

处理未认证请求

未通过身份验证的请求会收到一个 JSON-RPC 错误响应,其中包含指向 OAuth 保护资源元数据的 WWW-Authenticate 头:

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

响应中包含一个 WWW-Authenticate: Bearer realm="/.well-known/oauth-protected-resource" 头,使符合规范的 OAuth 客户端能够自动发现授权服务器配置。