外部系统回调集成说明
本页提供服务端签名公钥与 API 交互协议。外部系统可验证回调中签名,确保 challengecode 确实来自本系统。
返回验证页面1) 签名公钥(Ed25519)
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA8LYlzqgcavi5baWPK5gqXgsCeB29MLb2S3VlN/wO/R8=
-----END PUBLIC KEY-----
机器读取可用接口:/api/public-key
2) 外部系统发起方式
将用户引导至本系统并携带 query params:
GET /?challengecode=abc123&callback=https%3A%2F%2Fext.example.com%2Fapi%2Fverify-callback&redirect=https%3A%2F%2Fext.example.com%2Fverify-result- challengecode:外部系统生成的挑战码
- callback:本系统验证成功后 POST 回调地址
- redirect:回调完成后,浏览器重定向目标地址(自动附加 challengecode)
3) 回调请求格式(本系统 -> 外部系统)
POST callback
Content-Type: application/json
{
"challengeCode": "abc123",
"verified": true,
"verifier": {
"username": "octocat",
"keyId": 123456,
"keyType": "RSA",
"totalKeys": 3
},
"signed": {
"algorithm": "ed25519",
"payload": "<base64url(JSON)>",
"signature": "<base64url(signature)>",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----..."
}
}4) 签名校验规则
- 签名算法:Ed25519
- 签名原文:signed.payload(字符串本身)
- payload 解码:base64url 解码后得到 JSON,字段含 challengeCode / username / issuedAt