外部系统回调集成说明

本页提供服务端签名公钥与 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