身份与交易
Account
共享身份、通行密钥与应用授权
Account 是多个产品共用的身份与授权服务。它核验通行密钥和外部身份,通过原始登录请求把认证结果交给获准的业务后端;后端兑换并验证后,建立应用自己的会话。登录、添加凭据、机器授权和付款标记分别处理,业务权限仍由各产品决定。
为独立应用接入同一个账号 用户从业务应用发起登录,Account 完成凭据验证,业务后端核对原请求后创建本应用会话。账号身份可以共享,应用路由、会话保存和业务权限仍由各应用明确管理。
从业务自己的登录请求开始
这是一条 OIDC 授权代码流程。登录分成浏览器、业务后端和 Account 三方。业务后端先保存短期原请求,记录状态标识(state)、随机数(nonce)和授权码校验机制(PKCE),再把浏览器引向 Account 的认证界面。认证完成后,结果只返回该应用精确登记的回调地址;不同应用可以使用独立域名。
后端核对回调属于原请求,兑换一次性授权码,再验证签名、签发方、接收方、随机数与有效期。全部成立后,应用才创建自己的会话。交换结果不明时,需要从原应用发起新登录,不能重发可能已用过的授权码,也不能借用另一页面的请求。
应用后端持有登录上下文与机密
应用接入时需要明确的 HTTPS 签发方、保密客户端凭据、精确登记的回调地址和所需身份声明。浏览器负责前往认证页面,业务后端保存原登录上下文并执行令牌交换;客户端机密不进入前端资源。
后端为每次登录独立产生 state、nonce 与 PKCE 材料,并把它们绑定到发起登录的浏览器。发现文档、验证密钥、HTTP 传输与业务会话仍由接入方正确配置;仅能访问认证页面,并不构成完整接入。
登记应用与返回位置
确定签发方、客户端和精确回调地址;回调的字节匹配不能用宽泛域名或重定向规则代替。
保存原浏览器请求
建立短期登录上下文,固定 state、nonce、PKCE 与对应浏览器,再发起授权跳转。
完整验证后创建会话
核对原回调、交换一次授权码,并验证令牌的签名与全部必需声明,再由应用创建自己的会话。
稳定身份来自明确的凭据归属
Account 为账号分配永不复用的身份。用户可使用通行密钥,也可通过微信、支付宝、抖音、Google、GitHub 或 Microsoft 登录。外部身份按提供方规定的稳定用户标识与适用范围核验,邮箱、昵称和展示资料不能用来合并账号。
一个账号可以保留多把通行密钥;同一种外部提供方只绑定一个身份。新增凭据归属当前认证的原账号,不能创建替代账号或转移已归属的身份。提供方配置删除或应用标识变化后,历史绑定仍保留原身份范围,能否继续使用需按当前配置判断。
| 操作 | 使用的身份依据 | 持久化结果 |
|---|---|---|
| 首次认证 | 通过核验的全新凭据 | 新账号、凭据和 Account 会话 |
| 已有账号登录 | 已归属的凭据 | 该账号的新会话,不替换账号 |
| 添加凭据 | 原账号的会话与本次证明 | 新增绑定,不创建替代会话 |
每份证明只完成原来的动作
登录和添加外部身份的流程都有固定截止时间,读取页面或开始下一步不会续期。通行密钥的验证请求还绑定原浏览器、用途和精确来源。外部回调先在数据库中取得该流程的唯一处理权,再兑换提供方授权码,并发回调不能重复发起同一次交换。
通行密钥要求用户验证,并核对签名、来源、网站标识(RP ID)和计数变化。普通外部授权回调不证明用户刚完成认证。要求重新认证,或距上次认证的时间不符合要求时,流程需要新的本地通行密钥验证,并使用这次验证的真实时间。
取消、到期和交换未知都回到原登录
用户取消或提供方返回错误时,也要先验证回调中的 state 属于原浏览器请求。错误不能让一个页面关闭另一个页面的登录,也不能借用另一项尚未到期的上下文。添加登录凭据时,原账号同样保持固定。
授权码交换结果未知时,不创建已验证会话,也不再次兑换可能已被使用的代码。接入方应保留真实结果,并让用户从原应用开始一项新的登录。固定到期的旧流程不会因刷新页面或等待网络恢复而自动续期。
准入条件:原回调和身份令牌均通过完整验证
验证范围包含签发方、接收方、nonce、有效期和签名,并保持原浏览器绑定,才允许建立应用会话。
不能推断:外部授权返回即刚完成身份验证
普通 OAuth 回调不证明一次新的本地用户验证;要求新鲜认证时,必须使用对应的真实证明。
继续核对:凭据的用途与接收方
ID Token、UserInfo 访问和机器授权各自完成不同任务,不能因同属一个账号就相互代用。
为不同接收方签发不同授权
身份令牌(ID Token)告诉指定应用本次登录对应哪个账号;UserInfo 身份信息接口返回同一账号的当前信息;机器授权则让后端在获准范围内调用 Transact 交易服务。三种凭据分别限定用途、接收方和权限,不能互相代替。
付费状态是长期保存的账号标记。Transact 确认首次金额大于零的收款后请求设置标记,Account 按客户端配置返回对应身份声明。读取不回查支付系统,也不处理金额、余额、准备金或退款。应用与账号的永久关联在原授权码成功兑换时才建立。
| 凭据 | 用途 | 有效期 |
|---|---|---|
| 身份令牌 ID Token | 指定应用验证登录身份 | 15 分钟 |
| UserInfo 访问令牌 | 读取原账号与原客户端对应的当前信息 | 15 分钟 |
| Transact 机器令牌 | 限定应用、接收方与操作范围 | 5 分钟 |
把限制、维护与验证放在准确边界
管理端可查询账号、应用关联,以及现有登录方式与当前配置是否相容,并修改本地限制。认证入口和最终保存结果时会检查限制,账号仍可退出自己的会话。其他产品的会话、已签发且可离线验证的身份令牌和机器授权,继续遵循各自权限。
过期认证记录按到期索引分批清理,保留账号、凭据、有效授权和付费状态。设计验证关注原浏览器绑定、并发首次登录、重复回调、晚到证明,以及换签名密钥时保留旧验证密钥的衔接。清理工作按到期记录进行,不随有效会话增多而转为全表扫描。