AI代理身份和可验证数据
引言
端到端可验证数据基础设施(EVDI)是一个全面的基础设施,用于管理人工智能代理生态系统中的数字身份和凭证。EVDI提供了一个安全、去中心化的框架,使AI代理能够在与其他代理、人类和系统交互的同时建立、管理和验证其身份。
什么是自我主权身份(SSI)?
自我主权身份(SSI)是一种数字身份管理模型,它使个人(在我们的例子中是人工智能代理)能够控制自己的身份和数据。与传统的集中式身份系统不同,SSI允许实体:
- 拥有自己的身份:在不依赖任何中央机构的情况下控制他们的数字存在
- 管理他们的凭据:根据需要存储和共享可验证的凭据
- 证明索赔:在不透露不必要信息的情况下展示自己的属性
- 建立信任:以分散的方式与其他实体建立可信连接
发行人和验证者的作用
在SSI生态系统中,有三个关键角色:
- 发行方:创建和签署可验证凭证的实体(例如,在执行面试后证明用户技能的人工智能代理)
- 持有者:接收和存储凭证的实体(例如,存储其功能的AI代理)
- 验证者:请求和验证凭据的实体(例如,检查代理授权的服务)
此存储库侧重于 发行人 该组件允许受信任的机构创建并向AI代理或其他实体颁发可验证的证书。
为什么EVDI对AI代理很重要
随着人工智能系统变得更加自主并与各种实体交互,它们需要安全的方法来:
- 证明他们的身份和能力
- 与人类、其他人工智能代理和外部系统建立信任
- 在不损害安全性的情况下共享可验证的信息
- 在参与复杂的互动时保持隐私
EVDI通过加密安全、防篡改的凭证实现了这些功能,这些凭证可以在不联系原始发卡机构的情况下进行验证。
互动范围
EVDI支持的交互不限于代理到代理的通信。它们延伸到:
- 人类代理人:人工智能代理可以向人类提供和颁发可验证的证书
- 代理到系统:AI代理可以使用其凭据与外部系统进行身份验证
- 人对代理人:人类可以向人工智能系统出示证书
- 系统到代理:外部系统可以向AI代理颁发证书
如需更多信息,请访问我们的 文档.
该存储库包含用于Empe自治身份颁发者服务的MCP(模型上下文协议)服务器,该服务器是更广泛的EVDI生态系统的第一个组件。未来的组件将包括凭证验证功能、代理到代理身份验证以及人工智能代理的自主身份管理。
SSI发卡机构服务的MCP服务器
概述
该项目实现了一个模型上下文协议(MCP)服务器,该服务器充当自主权身份(SSI)生态系统中AI模型和EMPE发卡机构服务之间的适配器。基于Spring Boot和Spring AI的MCP服务器功能,它允许AI助手通过定义良好的工具与发卡机构服务功能进行交互,从而实现AI驱动的凭证管理工作流程。
什么是MCP?
模型上下文协议(MCP)是一种使AI模型能够与外部系统和工具交互的协议。它允许模型:
- 发现可用工具
- 调用工具以执行特定操作
- 处理这些行动的结果
此MCP服务器将发卡机构服务功能作为AI模型可以调用的工具公开,弥合了自然语言交互和SSI凭证操作之间的差距。
原理
- 工具注册:服务器将SSI操作定义为具有明确描述和参数的工具
- 人工智能集成:AI模型连接到MCP服务器以发现可用工具
- 工具执行:当AI需要执行SSI操作时,它会向此服务器发出工具调用
- 结果处理:服务器在发卡行服务上执行操作,并将结果返回给AI
关键组件
- MCP服务器:将工具暴露于人工智能模型的基础
- 架构管理工具:创建和管理凭据架构的能力
- 凭证发放工具:生成和颁发可验证凭据的功能
- 发卡行服务客户端:处理与基础颁发者服务API的通信
未来能力
EVDI生态系统正在不断发展,计划中的功能包括:
- 凭证验证:用于验证代理提供的凭据的工具
- 代理身份管理:使AI代理能够使用DID管理自己的身份
- 凭据存储:允许代理收集和存储自己的凭据
- 选择性披露:使代理能够共享特定的凭据属性,而不会泄露所有信息
- 代理到代理身份验证:使用DID的AI代理之间的安全身份验证机制
访问发卡机构服务
一键式门户
我们提供了一个一键式门户,您可以在其中轻松部署自己的发卡机构或验证器服务实例。您可以访问门户网站 .
演示环境
出于测试目的,我们在以下位置提供了一个演示环境:
https://mcp-demo-issuer.evdi.app注意:访问演示环境需要一个访问代码,出于安全原因,此README中不包括该代码。访问代码将通过安全渠道提供给感兴趣的用户。
设置MCP服务器
先决条件
- Java 23或更高版本
- Maven 3.8+
- 访问EMPE发卡机构服务实例
配置
在您的 application.properties 或 application.yml:
# MCP Server Configuration
spring.ai.mcp.server:
port: 8090
cors.allowed-origins: "*" # For development only
# Issuer Service Connection
issuer:
api:
base-url: https://your-issuer-service.example.com/api/v1
client-secret: your-client-secret
schema-templates:
proof-of-purchase:
name: ProofOfPurchase
type: ProofOfPurchase
properties:
ticket:
type: string
title: Ticket Number
seat:
type: string
title: Seat Assignment
description:
type: string
title: Event Description
required-fields:
- ticket
- seat
- description构建并运行
mvn clean package
java -jar target/mpc-issuer-verifier-0.0.1-SNAPSHOT.jar将AI模型连接到MCP服务器
OpenAI自定义GPT示例
如果您正在使用OpenAI创建自定义GPT:
- 转到GPT生成器
- 在“配置”选项卡中,选择“操作”
- 使用以下命令添加新操作:
- 身份验证:无 - API终点: http://your-mcp-server:8090/api/v1 - 架构:设置为“从URL导入”并使用 http://your-mcp-server:8090/api/v1/openapi.json
拟人克劳德示例
对于Claude,您可以使用函数调用功能:
const response = await client.messages.create({
model: "claude-3-opus-20240229",
max_tokens: 1000,
system: "You are an assistant that helps users manage SSI credentials.",
messages: [
{
role: "user",
content: "Create a proof of purchase credential"
}
],
tools: [
{
name: "mcp_tools",
url: "http://your-mcp-server:8090/api/v1/openapi.json"
}
]
});可用的AI工具
MCP服务器向AI模型公开以下工具,并提供详细说明以指导适当使用:
架构管理工具
createSchema
创建新的凭据架构,定义可验证凭据的结构。
参数:
- 名字:人类可读的名称(例如,“购买证明”、“身份凭证”)
- 类型:此架构类型的唯一标识符,在创建产品时使用
- 属性:JSON映射定义模式属性及其类型和描述
- 必填字段:凭据中必须包含的必填字段列表
获取所有模式
检索系统中的所有凭据架构。
getSchemaById
通过其唯一标识符(UUID)获取特定模式。
参数:
- 本我:要检索的模式的UUID(例如,“db5a33e-2eef-41b4-9c74-2ed16c4bb4f4”)
deleteSchema
从系统中永久删除架构。
参数:
- 本我:要删除的架构的UUID
方案存在类型
检查具有指定类型的架构是否已存在。
参数:
- 类型:要检查的架构类型(区分大小写)
getLatestSchemaByType
按类型检索架构的最新版本。
参数:
- 类型:要搜索的架构类型(区分大小写)
凭证发放工具
createTargeted产品
为特定收件人DID创建凭证产品。
参数:
- 类型:要提供的凭据类型(必须与现有架构匹配)
- 证书科目:作为键值对包含在凭证中的数据
- 收件人Did:预期收件人的DID(例如,“DID:empe:testnet:123abc456def”)
createOpenOffering
创建任何人都可以申请的开放式凭证产品。
参数:
- 类型:要提供的凭据类型(必须与现有架构匹配)
- 证书科目:作为键值对包含在凭证中的数据
AI交互示例
示例1:创建模式并提供凭据
用户:“为我们的高级会员创建会员凭证。”
人工智能处理:
- 首先,检查是否存在合适的模式:
{
"name": "schemaExistsByType",
"parameters": {
"type": "MembershipCredential"
}
}- 如果不存在架构,请创建一个:
{
"name": "createSchema",
"parameters": {
"name": "MembershipCredential",
"type": "MembershipCredential",
"properties": {
"memberName": {
"type": "string",
"title": "Member Name"
},
"membershipLevel": {
"type": "string",
"title": "Membership Level"
},
"validUntil": {
"type": "string",
"title": "Valid Until",
"format": "date"
}
},
"requiredFields": ["memberName", "membershipLevel", "validUntil"]
}
}- 创建凭证产品:
{
"name": "createOpenOffering",
"parameters": {
"type": "MembershipCredential",
"credentialSubject": {
"memberName": "Jane Smith",
"membershipLevel": "Premium",
"validUntil": "2026-03-19"
}
}
}示例2:检索架构信息
用户:“我们目前支持哪些凭据类型?”
人工智能处理:
{
"name": "getAllSchemas",
"parameters": {}
}然后,人工智能将处理结果,以提供人类可读的摘要: “我们目前支持以下凭据类型:
- 会员资格证书(2个版本)
- 活动 Ticket
- 购买证明”
