airdb.id

airdb.id · 统一身份平台

一个身份,
通行所有
airdb 服务。

airdb.id 是 airdb 体系的用户身份中枢:OIDC / OAuth 2.1 单点登录, Passkey 多因素,零信任接入。实名核验坚持「核验即弃」—— 证件是用来核验的,不是用来收藏的。

平台建设中 · 现行入口 sso.airdb.dev · 国内环境 id.airdb.net

airdb identitySPECIMEN · 样本
持有人 / Holder
示例 · SPECIMEN
签发方 / Issuer
id.airdb.net
证件号 / ID No.
hmac:8f3c…e21a
凭据 / Credential
Passkey · 已启用
实名状态 / Status
已核验 ✓
证件影像 / Image
未留存 —

▲ 示例样本:我们保存的全部,就是这张卡上的东西。

OIDC / 2.1
标准协议 · OpenID Connect + OAuth 2.1
1 个账号
通行 BBS、XAdmin 与全线 airdb 服务
0 份影像
证件核验即弃 · 只留结果与哈希
2 套环境
国内 id.airdb.net · 海外 airdb.id

平台能力

六件事,一个身份

登录、账号、多因素、审计、实名、零信任——用户身份相关的事都归这里, 业务系统不再各自管用户。状态如实标注:没上线,就写规划中。

01建设中P0

统一登录 SSO

OIDC / OAuth 2.1 单点登录,BBS、XAdmin、门户共用一个账号,登录一次全线通行。

02建设中P0

账号中心

资料、第三方绑定、登录设备与历史,一处管理;授权过的应用随时一键撤销。

03规划中P1

Passkey 与多因素

WebAuthn 无密码登录作为一等公民,TOTP 与短信兜底,密码只是过渡方案。

04规划中P1

审计与风控

登录与授权事件全量留痕,只增不改;异地登录、异常行为主动告警。

05规划中P2

实名核验 · 核验即弃

对接权威数据源核验身份证与护照,只留「已核验」结果与哈希,不留任何影像。

06规划中P3

零信任接入

内部系统统一挂身份感知代理,按角色与 MFA 等级放行,业务自身不再做登录。

核验即弃 · Verify & Discard

证件用来核验,
不用来收藏

身份证、护照、工作证——这类敏感证件,对平台来说存下来就是负债。 泄露一次,用户没法像改密码一样换一张身份证。

所以 airdb.id 把实名做成一条通道而不是一个仓库: 证件只在核验那一刻经过我们,比对完成即丢弃,系统里留下的只有结果、哈希与时间。

业务系统则更简单:只能问「这个人是否已实名」,得到一个布尔值,永远拿不到证件数据——因为我们自己也没有。

注:依照《个人信息保护法》,证件信息属于敏感个人信息——单独同意、最小化使用、 国内数据境内留存。「核验即弃」是把合规写进架构,而不是写进承诺。

提交核验

证件信息仅在这一次核验请求中使用,全程加密传输,不落任何中间存储。

权威源比对

对接公安三要素等权威数据源实时比对,我们做通道,不做证件的抄写员。

即时丢弃

比对完成即丢弃原始数据,只写下三样东西:结果、哈希、时间。

我们保存的
  • verified已实名 · 布尔值与核验等级
  • hmac(证件号)单向哈希 · 仅用于查重
  • verified_at核验时间与审计流水
我们不保存的
  • 证件影像身份证、护照、工作证照片
  • 明文证件号任何可还原的证件号码
  • 人脸数据活体检测的原始帧

开发者接入

标准 OIDC,不发明轮子

任何支持 OpenID Connect 的语言和框架都能直接接入, 三个端点走完标准授权码流程,不需要学习私有协议。

  • 强制 PKCE,不提供隐式流——按 OAuth 2.1 的姿势来。
  • 短时效 Access Token,Refresh Token 旋转,一次一换。
  • 实名查询只返回布尔与等级,业务方永远接触不到证件数据。
  • Webhook 推送注册、注销与风险事件,业务侧无需轮询。
$ curl https://airdb.id/.well-known/openid-configuration

{
  "issuer":                 "https://airdb.id",
  "authorization_endpoint": "https://airdb.id/oauth/authorize",
  "token_endpoint":         "https://airdb.id/oauth/token",
  "jwks_uri":               "https://airdb.id/oauth/jwks",
  "scopes_supported":       ["openid", "profile", "email"],
  "code_challenge_methods_supported": ["S256"]
}
GET /oauth/authorize
    ?client_id=bbs-airdb-net
    &response_type=code
    &scope=openid profile
    &redirect_uri=https://bbs.airdb.net/auth/callback
    &code_challenge=E9Melhoa…OT41gw   # PKCE · S256,强制
    &state=af0ifjsldkj

302 → https://bbs.airdb.net/auth/callback?code=…&state=…
POST /oauth/token
    grant_type=authorization_code
    code=SplxlOBeZQQYbYS6WxSbIA
    code_verifier=dBjftJeZ4CVP…

{
  "access_token":  "eyJhbG…",  # JWT · 短时效
  "refresh_token": "v1.MjAy…", # 旋转 · 一次一换
  "id_token":      "eyJhbG…"
}

路线图

四步走,不许愿

每一期都是可独立交付的能力:先把 SSO 落地,再做加固,然后才轮到实名与零信任。

P0

SSO 落地

OIDC IdP 上线,BBS 与 XAdmin 首批接入,账号中心提供资料与密码管理。

建设中
P1

安全加固

Passkey / TOTP 多因素,登录历史与全量审计,管理后台与应用注册。

规划中
P2

实名体系

核验即弃的实名核验上线;业务方只能查询「是否已实名」,拿不到证件数据。

规划中
P3

零信任

身份感知代理覆盖内部系统,SCIM 用户同步与细粒度授权。

规划中

环境与接入方

两套环境,一一对应

.id 与 .dev 一样无法 ICP 备案,所以国内、海外各一套,账号互通; 国内用户的敏感数据只落国内节点。

CN · 已备案

id.airdb.net

国内环境,国内用户数据只落国内节点,敏感数据不跨境同步。

GLOBAL

airdb.id

海外环境,与国内系统一一对应;.id 域名无法 ICP 备案,仅部署海外节点。

常见问题

问得最多的,
先答在这

关于核验即弃、数据去向和接入方式。没找到答案的问题,去 GitHub 提 issue, 答完会补充到这里。

「核验即弃」之后,你们手里还有什么?

只有三样:已实名的布尔结果与核验等级、证件号的单向哈希(仅用于查重,无法还原)、核验时间与审计流水。证件影像、明文证件号、活体检测的原始帧,在比对完成的那一刻即时丢弃,不落任何存储。

业务系统能拿到我的证件信息吗?

不能。业务方只能调用实名查询接口,得到「是否已实名」与核验等级两个字段。这不是权限问题,而是架构问题——证件数据我们自己也没有留存,想给也给不出来。

国内和海外是一个账号吗?数据存在哪里?

账号一一对应、全线互通:国内走 id.airdb.net(已备案),海外走 airdb.id。依照《个人信息保护法》,国内用户的敏感数据只落国内节点,不做跨境同步。

为什么不让各系统自己做登录?

登录这件事做一次就够了。密码策略、Passkey、风控、审计,集中在一处建设和修补,比散落在每个系统里各修各的可靠得多;业务系统只做业务,暴露的攻击面也更小。

现在可以接入吗?

SSO 正在建设中(P0 阶段)。接入走标准 OIDC:先在 GitHub 提 issue 登记排期,IdP 上线后把 discovery 地址指向 airdb.id 即可,业务逻辑无需改造。

让系统少管一件事

把登录和用户交给 airdb.id,业务只做业务。接入排期、能力建议、台账缺漏——都欢迎提 issue。