跳转到主要内容

Bearer 身份验证

使用 Bearer 令牌进行身份验证
Bearer 令牌是对受保护的应用程序编程接口 API 和 MCP 服务器进行身份验证的最简单方式。它们非常适用于 API 密钥、服务账户以及其他非交互式工作流。

使用 Dedalus SDK(DAuth)

如果使用 Dedalus runner / marketplace,通常会先声明一个 Connection schema(定义所需的机密信息),然后在运行时将其绑定到实际的值。

步骤 1:定义 Connection

from dedalus_mcp import Connection, SecretKeys

x = Connection(
    name="x",
    secrets=SecretKeys(token="X_BEARER_TOKEN"),
    base_url="https://api.x.com",  # 你的 API 提供方基础 URL
    auth_header_format="Bearer {api_key}",
)

步骤 2:绑定凭证

import os
from dedalus_mcp import SecretValues

# SecretValues 将实际值绑定到 Connection 架构。
x_secrets = SecretValues(x, token=os.getenv("X_BEARER_TOKEN", ""))

步骤 3:传给你的 Runner

from dedalus_labs import AsyncDedalus, DedalusRunner

async def main():
    client = AsyncDedalus()
    runner = DedalusRunner(client)

    response = await runner.run(
        input="Find trending topics",
        model="anthropic/claude-sonnet-4-20250514",
        mcp_servers=["windsor/x-api-mcp"],
        credentials=[x_secrets],
    )

步骤 4:环境变量

# Dedalus 凭据
DEDALUS_API_KEY=dsk_your_key
DEDALUS_AS_URL=https://as.dedaluslabs.ai

# 您的外部 API 凭据
X_BEARER_TOKEN=AAAA...

auth_header_format 参考

auth_header_format 控制服务器通过 dispatch 调用外部应用程序编程接口 API 时如何格式化 Authorization 请求头。格式字符串必须包含 {api_key}
API格式发送的请求头
X (Twitter)Bearer {api_key}Authorization: Bearer AAAA...
GitHubtoken {api_key}Authorization: token ghp_...
SlackBearer {api_key}Authorization: Bearer xoxb-...
在以下情况下可以省略 auth_header_format
  • 通过查询参数请求体进行认证的 API
  • 使用自定义认证机制(而非标准认证请求头)的 API
如何确定正确的格式:
  • 查看外部应用程序编程接口 API 的认证文档
  • 查看该 API 的 401 响应以获取提示
  • 大多数现代 API 使用 Bearer {api_key}

适用场景

Bearer 令牌适用于:
  • API 密钥和服务令牌
  • 服务到服务的调用
  • CI/CD 流水线
  • 后端集成
在以下场景应改用 OAuth:
  • 面向终端用户的应用
  • 委托访问(“代表某个用户执行操作”)
  • 授权同意流程和刷新令牌

独立的 dedalus_mcp Client

如果你需要直接连接到要求 Bearer token 的 MCP 服务器,请在调用 MCPClient.connect(...) 时传入 BearerAuth
from dedalus_mcp.client import BearerAuth, MCPClient

client = await MCPClient.connect(
    "http://127.0.0.1:8000/mcp",
    auth=BearerAuth(access_token="your-token"),
)
这将发送:
Authorization: Bearer your-token