Skip to content

ACCESS_TOKENS 认证令牌表 ​

此表用于存储系统中有多种来源的访问凭证,如:OAuth2 授信应用签发的 token、系统内部生成的临时 token 等。除了Personal Access Token (PAT) 在 PERSONAL_ACCESS_TOKENS 中存储以外, 系统内部所有的访问凭证都存储在该表中。

位置 ​

模型路径:/sysdata/data/tables/sec/ACCESS_TOKENS.tbl

物理表名:SZSYS_5_ACCESS_TOKENS

表结构 ​

字段名字段类型字段描述
ACCESS_TOKENVARCHAR(64)主键,凭证原文的落库值(原文前 8 位明文 + sha256 摘要前 32 位十六进制,共 40 字符)。原文由系统随机生成(UUID),只交给客户端,库中不保存
SOURCE_TYPEVARCHAR(32)凭证来源类型,见 SOURCE_TYPE 取值
USER_IDVARCHAR(32)凭证对应的用户 ID
USER_DIRECTORYVARCHAR(16)用户目录,sys 系统用户、external 外部用户,不填默认为 sys
SSOIDVARCHAR(128)签发此凭证的 SSO 提供者 ID(如 wechat_oa),单点登录有此字段,用于追溯登录来源
ENABLEDNUMBER(1)是否启用。1 有效,0 已禁用或已吊销。与过期时间是两个独立维度:token 未过期但 ENABLED != 1 也无法使用
APP_IDVARCHAR(32)授信应用 ID,仅 OAuth2 和客户端凭证 token 有此值,关联 SZSYS_5_TRUSTED_APPS
APP_NAMEVARCHAR(128)授信应用名称,冗余存储方便查询
EXPIRE_TIMETIMESTAMP凭证过期时间
CREATE_TIMETIMESTAMP凭证创建时间

表索引 ​

类型名称字段列表是否唯一说明
主键PRIMARYACCESS_TOKEN是唯一标识一条凭证记录

快速理解 ​

凭证类型用途典型场景
OAuth2 access token第三方应用调用开放 API第三方应用后端 API 调用
客户端凭证 token可信服务器代入用户身份调用接口系统间集成
证书凭证 token使用证书认证的可信服务器代入用户身份调用接口高安全要求的系统间集成
系统内部 token系统自动生成的临时凭证(API、调试、截图、扫码预览等)内部服务

上述凭证共用同一个鉴权入口(Bearer 头或 URL 参数 access_token),系统根据 SOURCE_TYPE 采用不同的校验规则。

SOURCE_TYPE 取值 ​

SOURCE_TYPE凭证类型创建 Session使用后删除
authorization_codeOAuth2 access token是否
client_credentials客户端凭证 token是否
personal_temp页面跳转登录 token(signin / getAccessToken)是是
sys_script脚本生成凭证是否
sys_nodejsNodeRunner 调试 token是否
sys_screenshot截图服务 token是否
sys_mobile_preview移动端预览 token是否

各类型凭证说明 ​

OAuth2 access token:SOURCE_TYPE = authorization_code ​

第三方应用通过 OAuth2 授权流程获取的接口凭证。授权码和刷新令牌存储在 REFRESH_TOKENS,本表只存 access_token。

用户授权后,系统在 REFRESH_TOKENS 中消费授权码,在本表写入 access_token 行。access_token 可用于调用开放 API,也可用于创建 Session。刷新 token 时本表的 ACCESS_TOKEN 和过期时间会更新。允许多次使用。

客户端凭证 token:SOURCE_TYPE = client_credentials ​

服务端到服务端集成的凭证,第三方系统以自身应用身份代入指定用户调用接口,整个过程无需浏览器跳转或用户交互。系统签发前会依次校验:授信应用是否启用、APP_SECRET 是否匹配、请求来源 IP 是否在白名单内、被代入用户是否属于授信应用配置的用户组范围。该 token 记录的是"应用身份 + 用户身份"的组合——APP_ID / APP_NAME 标识授信应用来源,USER_ID / USER_DIRECTORY 标识实际代入的用户;首次鉴权时按令牌原文派生会话键创建 Session,后续带同一令牌的请求自然落在同一个会话上。

系统内部 token ​

系统内部自动生成的临时凭证,便于排查和审计。

SOURCE_TYPE生成来源是否一次性说明
personal_tempsignin 非 AJAX / getAccessToken是拼在 URL 上做页面跳转登录,用后立即删除,防止任何人拿到 URL 重复登录
sys_nodejs后端使用命令行调用nodejs编译元数据否VSCode 调试注入,调试会话期间可重复使用
sys_screenshot生成缩略图否服务端截图,批量导出时同一 token 可能需要多次渲染
sys_mobile_preview手机扫码仪版、报表等生成的二维码页预览对应的页面否扫码预览、二维码访问,同一个二维码需支持多人扫描
sys_scriptsecurity.createAccessToken否服务端脚本为指定用户生成凭证,允许多次使用,需脚本自行管理生命周期

过期时间规范 ​

SOURCE_TYPE有效期说明
authorization_code默认 8 小时(28800 秒)OAuth2 access_token,参考 GitHub OAuth2 规范,用于 expires_in 属性,可由 TRUSTED_APPS.ACCESS_TOKEN_TTL 配置
client_credentials默认 8 小时(28800 秒)客户端凭证 token,同 OAuth2 规范,可由 TRUSTED_APPS.ACCESS_TOKEN_TTL 配置
sys_script8 小时(28800 秒)服务端脚本生成凭证,与 OAuth2 token 一致
personal_temp、sys_nodejs、sys_screenshot、sys_mobile_preview10 分钟页面跳转/编译/截图/扫码预览等一次性或短生命周期场景

数据示例 ​

ACCESS_TOKENSOURCE_TYPEUSER_IDUSER_DIRECTORYAPP_IDEXPIRE_TIMECREATE_TIMEENABLED
7d3f9a2c4e1b8d6f0a5c3e7b9d2f4a6c8e0b1d3fauthorization_codeu001sysapp0012026-06-10 12:00:002026-06-10 10:00:001
1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0bpersonal_tempu002sys2026-06-10 10:10:002026-06-10 10:00:001
9f8e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6csys_mobile_previewu003sys2026-06-10 10:10:002026-06-10 10:00:001
2c4e6a8f1b3d5f7a9c2e4f6a8b1d3e5f7a9c2b4dclient_credentialsu004sysapp0022026-06-10 12:00:002026-06-10 10:00:001
  • REFRESH_TOKENS:存储 OAuth2 授权码和刷新令牌。授权码消费后写入本表 access_token,刷新令牌用于轮换 access_token。
  • PERSONAL_ACCESS_TOKENS:存储 PAT 的资产信息(名称、描述、启停状态)。

使用注意 ​

  1. 本表保存的是凭证原文的 sha256,原文才能直接代表访问身份;原文只下发给客户端,不应导出、展示或写入日志。
  2. personal_temp 是唯一一次性 token:拼在 URL 上做页面跳转登录,用后立即原子删除,防止 replay 攻击。其他类型(authorization_code、client_credentials、sys_script、sys_nodejs、sys_screenshot、sys_mobile_preview)不删,过期前可多次使用。
  3. 同一个 access_token 的多次请求复用同一个会话:会话键由令牌原文派生(sha256(令牌原文)),不依赖本表记录会话指针。
  4. 令牌属于敏感凭证,不应导出、展示或写入日志。
微信公众号微信公众号:山川软件