跳转到主要内容
DAuth 通过密封执行模型实现凭证隔离。你的 MCP 服务器永远不会看到原始凭证——只会接收到指向机密的不透明句柄,而这些机密被存储并仅在安全边界内解密。

整体流程

操作步骤

1. 客户端加密

凭据会在发送前先在本地设备上加密。明文机密绝不会在网络上传输。

2. 使用加密凭证发送请求

软件开发工具包(SDK)会将你的请求与加密后的凭证一同发送到 Dedalus。

3. 作用域令牌签发

DAuth 会存储加密后的凭据,并签发一个具有限定作用域的令牌,该令牌:
  • 绑定到特定的 MCP 服务器
  • 在密码学层面绑定到你的 Client 密钥(DPoP)
  • 只能用于已授权的操作

4. MCP 服务器接收令牌

MCP 服务器会接收这个带作用域的令牌,并使用 DAuth 的公钥对其进行验证。服务器永远不会接触到明文凭证。

5. 封闭执行

当 MCP 服务器需要调用外部应用程序编程接口 API(GitHub、Slack 等)时,会将请求分派到一个**安全飞地(sealed enclave)**中:
  • 使用硬件保护的密钥解密凭据
  • 通过 TLS 连接调用外部应用程序编程接口 API
  • 仅返回响应结果
  • 立即从内存中清除凭据
响应会通过 MCP 服务器流回到你的应用程序。在整个过程中,你的代码在任何时刻都无法访问原始机密数据。

安全属性

属性含义
客户端加密凭据在离开你的设备之前会被加密
作用域受限令牌令牌仅适用于特定服务器和 Connection
封闭执行解密在隔离的硬件边界内完成
发送方约束(DPoP)被窃取的令牌在没有私钥的情况下毫无用处
不持久化凭据机密按需解密,使用后立即擦除

为什么这很重要

传统架构要求你的应用程序直接处理凭证:
用户 → 应用 → [内存中的凭证] → 外部 API → 用户
使用 DAuth:
用户 → 加密令牌 → 作用域请求 → 密封边界(应用程序或外部应用程序编程接口 API) → 用户
你的应用程序代码、日志和错误追踪信息中永远不会出现明文机密。即使你的 MCP 服务器被攻陷,攻击者也无法提取凭据——它们只存在于受保护的执行边界之内。

使用 DAuth

有关实现细节,请参阅 Authorization
  • 使用 AuthorizationConfig 启用 DAuth
  • 配置服务器级和按 tool 划分的 scope
  • 在你的工具中访问已认证用户的 claims