Skip to content

获取 AppID 与 API 密钥

A7验证的接入涉及三个凭据:AppIdAppKeyApiPassword。搞清楚三者的区别,是正确接入的前提。

调用步骤

  1. 登录 开发者控制台
  2. 进入「API 信息」页面(/dev/apiinfo.html)。
  3. 在顶部的程序下拉框中选择你要接入的程序。
  4. 页面会显示该程序的 AppIdAppKey(程序密钥)与当前 ApiPassword
  5. 点击复制按钮把 AppIdAppKey 复制到你的项目配置里。
  6. ApiPassword 不需要手工复制,运行时由 Init 接口下发。

三个凭据对照

凭据长度 / 格式来源用途是否随请求发送
AppId数字串,如 150018创建程序时自动分配标识是哪个程序仅 Init 阶段发送
AppKey32 位大写字母 + 数字创建程序时自动生成Init 阶段参与签名仅 Init 阶段发送
ApiPassword32 位大写字母 + 数字Init 接口返回Handle 阶段的 RC4 密钥 + 签名密钥Handle 阶段通过请求头/表单/路径传递

为什么要分成两层

如果直接用 AppKey 加密每一次业务请求,那么 AppKey 会反复出现在网络流量中,一旦被逆向或抓包就永久泄露。

A7验证的做法是:

  1. AppKey 只在 Init 握手时用一次,参与 MD5(AppId + AppKey + TimeStamp + AppKey) 计算,不直接暴露明文用途。
  2. Init 返回 ApiPassword,之后所有业务请求都用 ApiPassword 做 RC4 加密和签名。
  3. ApiPassword程序级的接口密码,可以在后台重置;重置后老客户端重新 Init 即可拿到新值。

AppKey 的安全存储

AppKey 会被编译进客户端,理论上一定可以被逆向出来。请务必做到:

  • 不要AppKey 明文写进配置文件、注册表、日志。
  • 在客户端中至少做一次字符串混淆 / 分段拼接,抬高逆向成本。
  • 桌面软件建议配合代码混淆(.NET 用 ConfuserEx、易语言用静态编译 + 加壳)。
  • 一旦发现泄露,立刻在控制台重置 AppKey,老版本客户端将无法通过 Init。

绝对不要做的事

不要把 AppKey 放在你自己的公开 Git 仓库、CDN 上的 JS 文件、或者任何 Web 前端页面里。A7验证的 API 设计前提是 AppKey 只存在于你的客户端二进制中。

ApiPassword 的生命周期

  • 由 Init 接口返回,保存在内存变量中即可。
  • 不需要每次业务请求前都重新 Init;一次 Init 拿到后可以在整个进程生命周期内复用。
  • 当 Handle 返回 1001 程序不存在 时,说明 ApiPassword 已失效(后台重置过),重新调用一次 Init 即可。
  • 切勿把 ApiPassword 写进磁盘文件或日志。

推荐的健壮写法(伪代码):

text
函数 调用业务(action, 参数):
    如果 内存中的 ApiPassword 为空:
        执行 Init()
    结果 = Handle(ApiPassword, action, 参数)
    如果 结果.code == 1001:          // ApiPassword 失效
        执行 Init()                   // 重新握手
        结果 = Handle(ApiPassword, action, 参数)   // 重试一次
    返回 结果

传递 ApiPassword 的三种方式

服务端按以下优先级读取:

优先级方式示例建议
1请求头X-Api-Password: A1B2...P6推荐,不会落进访问日志
2表单字段ApiPassword=A1B2...P6可用
3URL 路径POST /api/verify/A1B2...P6兼容旧客户端,明文进访问日志

路径传递的风险

ApiPassword 写在 URL 路径里,会被 nginx 访问日志、代理服务器、浏览器历史完整记录。新项目请优先使用 X-Api-Password 请求头。

接口地址

环境InitHandle
推荐https://api.a7p.cn/api/verifyhttps://api.a7p.cn/api/verify/{ApiPassword}
兼容https://www.a7p.cn/api/verifyhttps://www.a7p.cn/api/verify/{ApiPassword}

两个域名指向同一套后端,新接入统一使用 api.a7p.cn

下一步

A7验证 · 软件授权与网络验证平台