协议 / 中级 / 12 分钟

信任注册表与 TRQP

无需共享内部策略即可完成实时授权查询

信任注册表要解决的问题

当智能体跨组织边界运作时,接收方系统如何知道它们此时此刻是否获得授权?

传统方案:

  • 目录联合 —— 合并 Active Directory(复杂,暴露内部结构)
  • API 回调 ——“智能体 42 是否获得授权?“(存在延迟,依赖可用性)
  • 静态凭据 —— 长期有效的令牌(无法即时吊销)

问题:

  • 延迟 —— 每次鉴权检查都需要网络往返
  • 隐私 —— 暴露了你在检查谁、何时检查
  • 吊销滞后 —— 令牌吊销并非即时生效
  • 紧耦合 —— 双方系统必须集成对接

信任注册表 + TRQP 解决了这个问题:一种标准化协议,用于查询”[这个智能体] 现在是否被授权[执行此操作]?“,且无需暴露内部策略。


什么是信任注册表?

信任注册表是一个授权权威机构,用于回答某个实体(智能体、个人、系统)当前是否被授权执行某项操作的查询。

不是数据库转储 —— 它不会暴露全部策略;它只回答具体的问题:

  • ✅ “did:webvh:bankA.com:agent-42 是否被授权执行交易?”
  • ✅ “agent-42 是否依然有效,还是已被吊销?”
  • ❌ 不会回答:“把你所有智能体的列表给我”(保护隐私)

关键属性:

  1. 仅供查询 —— 验证者提出问题;注册表回答是/否
  2. 实时性 —— 授权状态反映当前状态(吊销即时生效)
  3. 隐私保护 —— 注册表不会得知智能体在做什么,只知道有人验证过它
  4. 解耦 —— 无需共享基础设施;基于 DID 身份的 HTTP API

什么是 TRQP?

TRQP(信任注册表查询协议) 是用于查询信任注册表的标准化 HTTP API

类比: TRQP 之于信任,就像 DNS 之于域名——一种通用的查询协议。

TRQP 查询:

POST /trust-registry/query
Content-Type: application/json

{
  "query": {
    "agent": "did:webvh:bankA.com:agent-42",
    "action": "execute-trades",
    "resource": "AAPL"
  }
}

TRQP 响应:

{
  "authorized": true,
  "authorizedBy": "did:webvh:bankA.com:trader-alice",
  "expiry": "2026-12-31T23:59:59Z",
  "conditions": ["trades < $1M per transaction"]
}

TRQP 具备以下特点:

  • 标准化 —— 所有信任注册表使用相同的查询格式
  • 可扩展 —— 可为特定领域需求添加自定义字段
  • 无状态 —— 每次查询都是独立的
  • 可缓存 —— 响应可被缓存(带 TTL)以提升性能

信任注册表的工作原理

1. 注册(初始设置)

签发者在其信任注册表中注册智能体:

// A 银行注册 Agent-42
await trustRegistry.register({
  agent: 'did:webvh:bankA.com:agent-42',
  authorizedBy: 'did:webvh:bankA.com:trader-alice',
  permissions: ['execute-trades'],
  expiry: '2026-12-31',
  conditions: { maxTradeValue: 1_000_000 }
})

2. 查询(运行时)

验证者查询注册表:

// B 银行检查 Agent-42 是否获得授权
const response = await trqpQuery({
  registryUrl: 'https://bankA.com/trust-registry',
  query: {
    agent: 'did:webvh:bankA.com:agent-42',
    action: 'execute-trades',
    resource: 'AAPL',
    timestamp: new Date().toISOString()
  }
})

if (!response.authorized) {
  throw new Error('智能体未获授权')
}

// 若已获授权则继续执行

3. 吊销(动态调整)

签发者吊销授权:

// A 银行吊销 Agent-42 (即时生效)
await trustRegistry.revoke({
  agent: 'did:webvh:bankA.com:agent-42',
  reason: '交易员 Alice 已离职'
})

// 下一次 TRQP 查询将返回 authorized: false

TRQP 查询示例

示例 1:简单授权检查

查询:

{
  "query": {
    "agent": "did:webvh:bankA.com:agent-42",
    "action": "execute-trades"
  }
}

响应:

{
  "authorized": true,
  "authorizedBy": "did:webvh:bankA.com:trader-alice",
  "expiry": "2026-12-31T23:59:59Z"
}

示例 2:特定资源的授权

查询:

{
  "query": {
    "agent": "did:webvh:hospital.com:agent-99",
    "action": "access-PHI",
    "resource": "patient-12345"
  }
}

响应:

{
  "authorized": true,
  "authorizedBy": "did:webvh:hospital.com:caseworker-bob",
  "expiry": "2026-07-22T00:00:00Z",
  "conditions": ["purpose: treatment-review"]
}

示例 3:已被吊销的智能体

查询:

{
  "query": {
    "agent": "did:webvh:bankA.com:agent-99"
  }
}

响应:

{
  "authorized": false,
  "reason": "智能体已被签发者吊销",
  "revokedAt": "2026-07-20T14:30:00Z"
}

信任注册表与其他方案的对比

维度目录联合API 回调信任注册表 + TRQP
搭建复杂度高(需合并目录)中(需定制集成)低(标准协议)
隐私性暴露内部结构签发者能看到每一次查询仅查询,不暴露内部信息
延迟不稳定(LDAP 查询)需网络往返快(HTTP + 缓存)
吊销速度数分钟至数小时实时(但紧耦合)实时(且解耦)
跨组织支持需要联合协议每个合作伙伴需定制标准协议

真实应用场景

1. 跨组织智能体信任

场景: A 银行的智能体与 B 银行的系统进行交易。

流程:

1. A 银行为 Agent-42 签发 DID + Mandate (VC)
2. A 银行在其信任注册表中注册 Agent-42
3. Agent-42 向 B 银行发送交易请求
4. B 银行通过 TRQP 查询 A 银行的信任注册表:
   "Agent-42 是否被授权执行交易?"
5. 信任注册表回应: "是,已获交易员 alice 的授权,2026-12-31 到期"
6. B 银行放行该交易

核心优势: B 银行永远不会看到 A 银行的内部授权策略——只能得到是/否的答案。

2. 运行时治理

场景: 智能体请求修改生产环境配置。

流程:

1. Agent Gateway 收到来自 Agent-42 的请求
2. Gateway 查询信任注册表:
   "Agent-42 是否被授权在生产环境中修改配置?"
3. 信任注册表检查:
   - Agent-42 是否仍然有效?
   - 授权人 (工程师 bob) 是否仍在职?
   - 是否存在任何时间/资源限制?
4. 响应: authorized=true, conditions: ["需要审批"]
5. Gateway 在允许操作前强制执行多重审批

核心优势: 运行时策略执行,而不仅仅是事后取证式的日志。

3. PHI 访问授权 (HIPAA)

场景: AI 智能体需要访问患者健康记录。

流程:

1. 个案管理员 Alice 授权 Agent-99 访问患者 patient-12345
2. 信任注册表记录: Agent-99 → 由 Alice 授权 → 24 小时后过期
3. Agent-99 请求访问 PHI
4. 系统查询信任注册表: "Agent-99 是否被授权访问 patient-12345?"
5. 响应: "是,已获个案管理员 alice 的授权,2026-07-22 到期"
6. 授予访问权限,审计日志记录该授权 VC

核心优势: 符合 HIPAA 要求的授权证明——不只是一条日志记录,而是可通过密码学验证的凭证。


Affinidi 技术栈中的信任注册表

信任注册表产品 提供 TRQP 端点:

// 设置: 注册一个智能体
await affinidi.trustRegistry.register({
  agent: 'did:webvh:yourcompany.com:agent-42',
  authorizedBy: 'did:webvh:yourcompany.com:manager',
  permissions: ['execute-trades'],
  expiry: '2026-12-31'
})

// 运行时: 查询授权状态
const result = await affinidi.trustRegistry.query({
  agent: 'did:webvh:yourcompany.com:agent-42',
  action: 'execute-trades',
  resource: 'AAPL'
})

console.log(result.authorized) // true/false

Agent Gateway 通过 TRQP 强制执行策略:

// 智能体携带 DID 发送请求
const request = {
  agent: 'did:webvh:yourcompany.com:agent-42',
  action: 'execute-trade',
  payload: { symbol: 'AAPL', quantity: 100 }
}

// Gateway 在放行前查询信任注册表
const authorized = await agentGateway.checkAuthorization(request)
if (!authorized) throw new Error('未获授权')

// 若已获授权则继续执行

性能优化:缓存 TRQP 响应

TRQP 响应可以被缓存以降低延迟:

// 带缓存提示的查询
const response = await trqpQuery({
  registryUrl: 'https://bankA.com/trust-registry',
  query: { agent: 'did:webvh:bankA.com:agent-42' },
  cacheControl: 'max-age=300' // 缓存 5 分钟
})

// 缓存响应
cache.set(agent, response, { ttl: 300 })

// 后续查询命中缓存 (亚毫秒级)

权衡: 如果吊销发生在缓存 TTL 期间,缓存的响应可能已过时。需要根据你的风险承受能力,在延迟与实时性之间做出权衡。


快速上手

面向开发者

查询信任注册表:

npm install @affinidi/affinidi-tdk
import { TrustRegistry } from '@affinidi/affinidi-tdk'

const registry = new TrustRegistry('https://yourcompany.com/trust-registry')

const result = await registry.query({
  agent: 'did:webvh:yourcompany.com:agent-42',
  action: 'execute-trades'
})

console.log(result.authorized) // true/false

面向架构师

何时应使用信任注册表:

  • ✅ 跨组织智能体授权
  • ✅ 需要实时吊销
  • ✅ 隐私保护型授权(不暴露内部策略)
  • ✅ 解耦系统(无需共享基础设施)

何时不应使用:

  • ❌ 紧耦合的内部系统 (使用传统的授权方案)
  • ❌ 对亚毫秒级超低延迟有要求,连 HTTP 都太慢的场景
  • ❌ 永远不会变化的静态授权

延伸阅读

规范:

Affinidi 文档:

相关深度解析:

相关解决方案:

Cookie Preferences

We use cookies to enhance your experience. You can manage your preferences below. For more information, read our Cookie Policy.

Strictly Necessary Always Active

These cookies are essential for core website functions such as security, session integrity, and cookie preference storage. They cannot be disabled.

  • _cf_bm: Distinguishes humans from bots (Cloudflare) · 30m
  • _cfuvid: Ensures secure browsing (Cloudflare) · Session
  • __hs_initial_opt_in: Prevents HubSpot's banner · 7 days
  • _gtm_debug: GTM debug mode (testing only) · Session
Analytics

These cookies help us understand how visitors interact with the site so we can improve content and performance. All data is aggregated and anonymous.

  • _ga, _gid, _gat: Google Analytics · Session – 2 years
  • __hstc, hubspotutk, __hssrc: HubSpot visitor tracking · 13 months
  • __hs_opt_out: HubSpot opt-out preference · 6 months
Marketing & Targeting

These cookies allow us and our partners to serve personalised ads and measure campaign performance.

  • _gcl_au, _gcl_dc: Google Ads conversion tracking · 90 days
  • IDE: Google Display Network personalisation · 1 year
  • _fbp: Meta / Facebook remarketing · 90 days
  • li_gc, _li_fat_id, bcookie: LinkedIn tracking · 1–24 months
  • guest_id, personalization_id: Twitter/X analytics · 2 years