Omniscol API——身份验证令牌

Premium

Omniscol API:Omniscol提供基于OpenAPI文档的REST API,用于系统间集成——外部仪表盘、定制显示、与ERP或信息系统同步,以及通过MCP接入AI智能体。访问令牌仅限于生成时选定的接入点,可在提供此集成的账户中通过界面管理。

Omniscol API是一套以OpenAPI文档化的REST API,用于系统间集成:外部仪表盘、定制显示、ERP/信息系统同步,或通过MCP接入的AI智能体。

可通过界面管理的API令牌,仅在提供此集成的账户中可用。派生令牌只能访问生成时所选的API接入点,请勿默认它覆盖整个API。

密钥与令牌:两个不同的对象

Omniscol区分两个不可混淆的对象。

密钥是由Omniscol持久保存的对象,包含:

  • 一个随机生成的简短标识符,公开可见:列表中显示的就是它,它也包含在每个令牌中,用于指明需要验证的密钥;
  • 一个描述性的名称,可随时修改;
  • 一个可选的到期日期,可随时修改;
  • 一个由服务器生成的随机长密文,用作加密签名密钥。

标识符、名称和到期日期属于管理信息:标识符只是公开引用,并非机密。密文才是唯一的签名材料:它在创建密钥时随机生成,只保存在服务器端,不可修改,并且从不显示、从不返回——创建时不会,密钥列表中也不会。即使它泄露,也不足以伪造令牌:签名还会结合账户专属的盐值和服务器密文,这两者同样不会离开Omniscol。

令牌是一个独立的JWT(JSON Web Token),用密钥的密文签名。您把它提供给外部系统。其签名内容包含所属账户、授权接入点列表、所派生的密钥,以及令牌自身的到期日期。

换句话说:**密钥负责签名,令牌被签名。**同一个密钥可以签发多个令牌——它们都能用同一个密文验证,因此密钥一旦消失,这些令牌会一并失效。

Omniscol不保存令牌:它生成令牌,只显示一次,之后每次调用时用密钥的密文重新计算签名(HMAC SHA-256)来验证。没有这个密文,令牌所携带的任何授权都无法被篡改。

创建令牌

在Premium账户中,分享 界面位于 管理 → 导入 / 导出。创建分两步:先创建密钥,再用这个密钥生成令牌。

  1. 创建密钥——填写一个清晰的名称;如果访问是临时的,再填写到期日期。名称和到期日期之后仍可修改,签名密文则不可修改。
  2. 生成令牌——选择密钥,勾选授权的接入点,按需为令牌设置单独的到期日期,然后生成JWT。

生成时,Omniscol只显示令牌一次。请立即把它复制到密钥管理器中:之后不会再次显示。令牌的到期日期写在已签名的内容里,事后无法修改。若要更改该日期,请生成新令牌。

因此有两级相互独立的到期设置:

  • 密钥到期——可在密钥列表中修改;到期后,由该密钥派生的所有令牌都会被拒绝(调用返回401);
  • 令牌到期——在生成时确定,写入JWT,之后不可修改。

授权接入点

令牌只能访问生成时勾选的接入点:请勿默认它覆盖整个API。授权列表随令牌一起传递,并在每次调用时验证;调用未授权的接入点会被拒绝(401)。

除了单个接入点,选择列表还提供按模块的快捷选项:

  • 单独勾选某个模块的条目,授权该模块的所有接入点;
  • 按操作区分的选项——读取、修改、创建、删除——把该模块限定为某一类调用。

例如勾选“课表 [读取]”,即可授予全部课表读取权限而不开放任何写入,无需逐个勾选接入点。请遵循最小授权原则:只授予集成确实需要的模块和操作。

使用令牌

向API发送令牌,常用两种方式:

  • HTTP请求头:Authorization: Bearer <令牌>(推荐)。
  • 查询字符串:?auth=<令牌>(便于调试,但会出现在HTTP日志中——生产环境请避免使用)。

curl 示例,请替换为OpenAPI中的真实接入点:

curl -H "Authorization: Bearer $TOKEN" \
  https://your-school.omniscol.com/api/<module>/<endpoint>

OpenAPI文档

导入 / 导出界面提供一个OpenAPI 3.1链接,可在Swagger Editor中打开该账户可用的规范。您可以在其中找到:

  • 已开放的API接入点列表,
  • 交换数据的结构,
  • 方法和参数,
  • 预期的响应。

规范也由您的账户直接提供,无需身份验证:

  • /api/guest/openapi.json——JSON格式的规范;
  • /api/guest/openapi.yaml(或 /api/guest/openapi?yaml=true)——相同内容的YAML格式;
  • /api/guest/school_schema.json——账户数据的JSON结构。

为您的AI助手提供完整帮助

门户网站还把Omniscol的全部帮助发布为一个文本文件,可直接作为AI助手(Claude项目、自定义GPT等)的知识库:

撤销访问

撤销在密钥层面进行,而不是针对单个令牌。

界面列出用于生成令牌的密钥。删除密钥会清除Omniscol端的签名密文:此后,任何由该密文派生的签名都无法再通过验证,所有出示该密钥所签发令牌的调用都会返回401。令牌失效的原因是密文不存在,而不是因为有一份撤销名单。

对信息化部门而言,有两点需要注意:

  • **不支持逐个令牌撤销。**Omniscol不保存已签发的JWT,无法单独停用其中某一个:已生成的令牌在自身到期之前一直有效,或者直到其密钥被删除或到期。
  • 修改密钥的到期日期会立即影响其所有令牌:把该日期提前,会切断该密钥所有令牌的访问。

最佳实践:一旦怀疑某个密钥泄露,请立即删除,然后重新创建一个名称清晰的替代密钥。

每个目标系统、每种用途一个密钥

由于撤销以密钥为单位,请为每个集成单独使用一个密钥(一个外部软件对应一个密钥)。密钥的密文只为它自己的令牌签名:删除该密钥只会使相应集成的访问失效,不影响其他集成。

反之,如果多个系统共用同一个密钥,任何撤销都会很突兀:删除被泄露的密钥,会一次性切断所有使用它的系统。

适用的集成

API通常用于:

  • 定制的信息显示系统(超出Omniscol原生信息显示屏的范围;参见 显示屏的自定义),
  • 整合Omniscol与其他数据源的外部仪表盘,
  • 与ERP或业务信息系统的连接器或同步,
  • 通过MCP服务器使用Omniscol的兼容MCP的AI智能体;参见 MCP——连接外部AI智能体。

如果需要向已识别的第三方服务提供委托访问(限定范围的令牌、用户授权,停用客户端即可撤销),请优先使用Omniscol的OAuth2服务器:参见 OAuth2 / OIDC(提供方)。

操作步骤

生成API令牌

  1. 身份验证令牌让外部系统(仪表盘、信息显示、通过MCP接入的AI智能体)可以调用您所选的API接入点。

  2. 前往 管理 → 导入 / 导出,然后用 分享 打开分享界面。您会看到现有的密钥、它们的名称以及可能设置的到期日期。

  3. 如有需要,创建密钥。填写清晰的名称(财务仪表盘、大厅信息显示屏、Claude桌面端AI智能体);如果集成是临时的,再设置到期日期。之后仍可修改该密钥的到期日期。

  4. 选择密钥,然后勾选令牌可以调用的API接入点,列表应尽量精简。如果访问需要设定期限,还要选择令牌的到期日期。

  5. 生成令牌,然后立即复制显示的JWT。它不会再次显示,其到期日期也无法修改。之后请在HTTP请求头 Authorization: Bearer <令牌> 中使用它。

  6. 如需撤销访问,请删除对应的密钥。由该密钥派生的令牌随即失效。

另请参阅