You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.1 KiB
5.1 KiB
CA平台链接器服务
这是一个客户端程序和CA服务中间的信息交互服务,提供登录验证、自动签名开启和字符串签名功能。
功能特性
- 登录验证 - 支持扫码登录
- 自动签名开启 - 开启自动签名功能
- 字符串签名 - 支持多种签名方式
- Base64编码/解码 - 提供数据转换工具
- 时间戳服务 - 创建时间戳
API接口
1. 登录验证
接口: POST /Client/Login
请求体:
{
"account": "test",
"password": "123456"
}
响应:
{
"success": true,
"message": "登录成功,请扫码",
"signDataId": "xxx",
"qrCode": "xxx"
}
2. 添加签名任务
接口: POST /Client/AddSignJob
请求体:
{
"title": "测试签名",
"data": "要签名的数据",
"userId": "用户ID(可选)",
"algo": "SM3withSM2",
"expiryDate": "1400"
}
响应:
{
"success": true,
"message": "添加签名任务成功",
"signDataId": "xxx",
"qrCode": "xxx"
}
3. 自动签名
接口: POST /Client/AutoSign
请求体:
{
"userId": "用户ID",
"signToken": "签名令牌",
"data": "要签名的数据",
"algo": "SM3withSM2",
"expiryDate": "1400"
}
响应:
{
"success": true,
"message": "自动签名成功",
"signResult": "签名结果",
"signCert": "签名证书",
"signDataId": "xxx"
}
4. 获取签名结果
接口: POST /Client/GetSignResult
请求体:
{
"signDataId": "签名数据ID"
}
响应:
{
"success": true,
"message": "获取签名结果成功",
"jobStatus": "FINISH",
"signResult": "签名结果",
"signCert": "签名证书",
"userId": "用户ID"
}
5. 查询签名图片
接口: POST /Client/QueryImage
请求体: "用户ID"
响应:
{
"success": true,
"message": "查询签名图片成功",
"image": "base64图片数据"
}
6. Base64编码
接口: POST /Client/Base64Encode
请求体:
{
"plainText": "要编码的文本"
}
响应:
{
"success": true,
"message": "Base64编码成功",
"base64Data": "编码后的数据"
}
7. Base64解码
接口: POST /Client/Base64Decode
请求体:
{
"base64Data": "要解码的Base64数据"
}
响应:
{
"success": true,
"message": "Base64解码成功",
"plainText": "解码后的文本"
}
8. 创建时间戳
接口: POST /Client/CreateTss
请求体:
{
"oriData": "原文数据",
"attachCert": true
}
响应:
{
"success": true,
"message": "创建时间戳成功",
"tsResp": "时间戳响应"
}
配置说明
在 appsettings.json 中配置CA服务相关参数:
{
"CossBaseUrl": "https://newcoss-dev.isignet.cn:10201/coss/service/v1/",
"CossAppId": "APP_7B3F36A14E99410A80B37AEF332E3247",
"CossSecureCode": "DLwiH46Esb8ccNTkuSSVAadNTWUfW0sc",
"CossSignAlgo": "HMAC",
"CossVersion": "1.0"
}
使用示例
1. 启动服务
dotnet run
2. 访问Swagger文档
打开浏览器访问: http://localhost:5000/LISPlatformLinker/swagger
3. 调用API示例
登录并获取二维码
curl -X POST "http://localhost:5000/LISPlatformLinker/Client/Login" \
-H "Content-Type: application/json" \
-d '{"account":"test","password":"123456"}'
添加签名任务
curl -X POST "http://localhost:5000/LISPlatformLinker/Client/AddSignJob" \
-H "Content-Type: application/json" \
-d '{"title":"测试签名","data":"Hello World","algo":"SM3withSM2"}'
自动签名
curl -X POST "http://localhost:5000/LISPlatformLinker/Client/AutoSign" \
-H "Content-Type: application/json" \
-d '{"userId":"xxx","signToken":"xxx","data":"Hello World"}'
项目结构
CA-Platform-Linker/
├── Controllers/
│ └── ClientController.cs # 客户端控制器
├── Models/
│ ├── Coss/
│ │ └── CossModels.cs # CA服务模型
│ └── DTO/
│ └── ClientDto.cs # 客户端DTO
├── Services/
│ ├── Interfaces/
│ │ └── IClientService.cs # 客户端服务接口
│ └── ClientService.cs # 客户端服务实现
├── Tools/
│ ├── CossHelper.cs # CA服务帮助类
│ ├── ConfigHelper.cs # 配置帮助类
│ └── MySecurity.cs # 安全类
└── appsettings.json # 配置文件
注意事项
- 所有接口都使用POST方法
- 请求和响应都使用JSON格式
- 签名数据会自动进行Base64编码
- 需要正确配置CA服务的连接参数
- 建议在生产环境中使用HTTPS协议
错误处理
所有接口都包含错误处理,当请求失败时会返回错误信息:
{
"success": false,
"message": "错误描述"
}
日志
使用NLog进行日志记录,日志文件位于 logs/ 目录下:
logs/info/- 信息日志logs/error/- 错误日志logs/debug/- 调试日志