@adobe/aio-lib-ims

中文文档
8.1.2发布于 2026/04/30Apache-2.0TypeScriptCommonJS近 30 天下载 7.2万

Adobe IMS(身份管理系统) 支持模块提供低水平的IMS HTTP API访问以及更高水平的获取令牌支持.

中文使用文档
文档目录16 节
  1. 安装
  2. 快速启动
  3. 配置
  4. 在桌面上运行
  5. 在 Adobe I/O 运行运行时动作
  6. IMS 环境
  7. 设置当前上下文( 高级)
  8. JWT 配置( 已过期)
  9. 设置私钥
  10. OAuth2 配置
  11. OAuth 服务器对服务器配置
  12. 托肯验证
  13. 缓存
  14. 允许列表
  15. 捐款
  16. 许可证发放

Adobe I/O IMS 图书馆

Version Downloads/week Node.js CILicense Codecov Coverage

Adobe I/O IMS图书馆帮助与IMS API进行互动,并创建和去除符号. 为了支持多个使用大小写和环境,本库没有管理单一的配置,而是调用多个配置 IMS 配置背景。 。 。 . 每个配置上下文都持有创建令牌所需的配置数据. 见 配置 下节.

安装

要安装 Adobe I/O IMS 库,只需使用 npm数字 :

npm install @adobe/aio-lib-ims --save

快速启动

在使用 AIO IMS 库之前, 您需要创建 Adobe 开发者控制台的集成程序, 您可以从其中获取集成细节来设置第一个配置上下文 。 让我们以 OAuth2 集成为例:

const { context, getToken, getTokenData } = require('@adobe/aio-lib-ims')

const config = {
  redirect_uri: "https://callback.example.org",
  client_id: "123456cafebabe",
  client_secret: "12345678-cafe-babe-cafe-9999",
  scope: "openid"
};
await context.set('example', config, true)

const token = await getToken('example')
const tokenDecoded = getTokenData(token)

见 API 文档 详细情况.

配置

AIO IMS 图书馆透明地维护登录配置并保存 使用和刷新在过期前再使用的迹象.

所有配置都存储在单个中 ims 根属性.

库支持为不同的使用大小写维护多个配置. 每个这样的配置都存储在自己命名的对象中,并带有 ims 配置 . 这种配置被称为 IMS( 配置) 上下文 并有一个标签,允许按名称引用配置.

这是一个例子 ims 配置

{
  ims: {
    contexts: {
      sample_jwt: {
        client_id: "<jwt-clientid>",
        client_secret: "XXX",
        technical_account_id: "<guid>@techacct.adobe.com",
        meta_scopes: [
          "ent_dataservices_sdk"
        ],
        ims_org_id: "<org-guid>@AdobeOrg",
        private_key: "XXX"
      },
      sample_oauth2: {
        redirect_uri: "https://callback.example.com",
        client_id: "<oauth2-clientid>",
        client_secret: "XXX",
        scope: "openid AdobeID"
      },
    }
  }
}

在桌面上运行

当运行于您的本地机器时, AIO IMS 正在利用 Aio- cli 插件使用的配置模块 装入并更新存储在 .aio 财务报告和审定财务报表 .env 文档。 图书馆支持本地和全球的aio配置.

以下是依靠AIO IMS从现有配置中生成一个符号的例子:

const { context, getToken } = require('@adobe/aio-lib-ims')

await context.setCurrent('my-config')
const token = await getToken('my-config')

在 Adobe I/O 运行运行时动作

注:请选择更轻的 @adobe/aio-lib-core-auth (英语) 从 Adobe I/O 运行时动作生成 OAuth 令牌的库。 核心库注重高效地生成OAuth令牌,不依赖CLI所需的复杂上下文/插件逻辑. 它还使用内嵌式缓存,而不是App Builder State存储器,可能会遇到使用限制

AIO IMS库也可以被用到Adobe I/O跑时动作中. 在这种情况下,信息管理系统的配置必须事先确定。 图书馆依靠的是 Adobe App 构建器州立图书馆 将所有行动都作为访问标志,并减少向投管处提出的请求.

以下是Adobe I/O 运行时动作例

const { context, getToken } = require('@adobe/aio-lib-ims')

function main ({ imsContextConfig, ...params }) {
  // the IMS context configuration is passed as an action parameter
  // imsContextConfig = { client_id, client_secret, technical_account_id, meta_scopes, ims_org_id, private_key }
  await context.set('my_ctx', imsContextConfig)

  const token = await getToken('my_ctx')
}

几点考虑:

  • 对字符集的额外限制.

    • 名称空间必须通过 Adobe 开发者控制台( 遵循amsorg-project(-workspace)? 页:1 不支持遗留的命名空间 .
    • i/O 运行时动作名称和上下文名称(用于 context.set)必须是字母字符串和 -, (中文(简体) ), _, (中文(简体) ), . 被允许.
  • getToken('my_ctx') 将永远在州内留下象征 local=true|false 用于 context.set。 。 。 .

  • 只为单个 I/O 运行时动作缓存了符号, 这意味着缓存符号无法在动作和运行中获取 getToken 在另一个具有相同上下文名的动作中,将重生出一个新的符号.

IMS 环境

IMS环境的使用被保留给Adobe使用. 供参考的是: env 配置上下文属性并取出一个值 prod 财务报告和审定财务报表 stage。 。 。 . 默认值为 prod。 。 。 . 一般来说,你不需要处理这个财产.

设置当前上下文( 高级)

默认上下文可以在本地设置 await context.setCurrent('contextname')。 。 。 . 这将写入以下配置到 ims 键 .aio 当前工作目录的文件 :

  ims {
    config: {
      current: "contextname"
    }
  }

如果在同一工作目录中运行库, 那么 getToken 可以不通过 contextname数字 :

await context.set('contextname', config, true)
await context.setCurrent('contextname')
const token = await getToken() // generate a token for the config in the 'contextname' context

请注意: context.setCurrent 重写本地配置并替换默认值 aio 桌面环境中的 CLI OAuth 配置 . 这个会断的 aio 命令从同一目录中运行. 您可以通过执行恢复到原有行为 aio config delete ims.config.current 从目录.

JWT 配置( 已过期)

JWT配置已贬值,有利于OAuth服务器对服务器配置.

JWT(服务集成)配置需要具备以下属性:

财产说明
客户端( d)IMS(Oauth2)客户端ID. 这是 API 密钥 在 Adobe 开发者控制台的集成概览中.
客户端 机密IMS( ONOTH2) 客户端秘密
技术 账户 id这个 技术账户编号 从 Adobe 开发者控制台中的集成概览屏幕
元镜元范围名称阵列 。 这些是样本中一个矿石更特殊属性的标签 JWT 有效载荷。可以在 日本 选项卡中的 Adobe 开发者控制台集成 JWT 有效载荷 窗体属性 "https://<ims-host>/s/ent_dataservices_sdk": true,. 可能存在一种或多种取决于合并所订阅的服务。 要列出的值 元镜 属性是 URL 的最后一个部分。 举例来说,这将是 ent_dataservices_sdk。 。 。 .
ims org id (韩语)这个 组织标识 从 Adobe 开发者控制台中的集成概览屏幕.
私钥匹配任意一个的私钥 公钥 综合计划。 这可以作为一行中的私钥作为字符串,也可以是串的数组(每个元素都是从密钥文件中发出的一行) 见 设置私钥 节.
密码句(单位:千美元)可选) (中文(简体) ). 私钥之通口.

设置私钥

对于 JWT 配置,您的私人密钥在 Adobe 开发者控制台中生成,并在生成时被下载到您的计算机上.

Adobe 开发者 Console 不保留私有密钥(只保存您的对应公钥), 因此您必须设定您在 IMS 上下文配置中手动下载的私有密钥 .

您可以通过两种方式在配置中设置您的私钥:

  1. 导入私钥为字符串
  2. 设置私人密钥的文件引用

下面的指示假设一个私人密钥文件叫做 private.key 财务报告和审定财务报表 CONTEXT_NAME 是您 JWT 上下文的名称.

  1. 要导入您的私钥为字符串 : aio config:set ims.contexts.CONTEXT_NAME.private_key path/to/your/private.key --file
  2. 要设置私人密钥的文件引用 : aio config:set ims.contexts.CONTEXT_NAME.private_key path/to/your/private.key

注意您的私钥路径, 如果它是相对路径, 将会相对于当前工作目录解决 .

OAuth2 配置

OAuth2 配置需要以下属性:

财产说明
客户端( d)IMS(Oauth2)客户端ID. 这是 API 密钥 在 Adobe 开发者控制台的集成概览中.
客户端 机密IMS( ONOTH2) 客户端秘密
方向调整 uri这个 默认重定向 URI 从 Adobe 开发者控制台中的集成概览屏幕。 或者,任何URI匹配其中之一 重定向 URI 模式 可使用.
范围给令牌分配范围。 这是一系列逗号分离的域名, 取决于此集成所订阅的服务 。 Adobe 开发者控制台目前不披露为 OAuth2 集成定义的范围列表,在服务中可以找到一个很好的范围列表 OAuth 2.0 范围。至少您可能想要输入 openid。 。 。 .

OAuth 服务器对服务器配置

此配置将取代 JWT 配置 .

OAuth 服务器对服务器(客户资格授权类型)配置需要以下属性: 用户身份认证

财产说明
客户端( d)IMS(Oauth2)客户端ID. 这是 API 密钥 在 Adobe 开发者控制台的集成概览中.
客户端 机密IMS( ONDOTH2) 客户端机密阵列
技术账户( e)这个 技术账户电子邮件 从 Adobe 开发者控制台中的集成概览屏幕
技术 账户 id这个 技术账户编号 从 Adobe 开发者控制台中的集成概览屏幕
范围给令牌分配范围。 这是一系列的字符串, 取决于此集成所订阅的服务 。 OAuth2 服务器对服务器证书定义的范围列表列于 Scopes 选项卡.
ims org id (韩语)Adobe开发者控制台的集成概览屏幕中的组织ID.

托肯验证

缓存

验证和无效可以被缓存来提高性能. 要使用缓存, 配置一个新的缓存, 并在初始化时传递给库 :

const { Ims, ValidationCache, getToken} = require('@adobe/aio-lib-ims')

const CACHE_MAX_AGE_MS = 5 * 60 * 1000 // 5 minutes
const VALID_CACHE_ENTRIES = 10000
const INVALID_CACHE_ENTRIES = 20000
const cache = new ValidationCache(CACHE_MAX_AGE_MS, VALID_CACHE_ENTRIES, INVALID_CACHE_ENTRIES)
const ims = new Ims('prod', cache)

const token = params.theToken // May be passed via header, parameter, or other input
const imsValidation = await ims.validateToken(token)
if (!imsValidation.valid) {
  return new Error('Forbidden: This is not a valid IMS token!') // Next time validateToken() is called with this token, a call to IMS will not be made while the cache is still fresh
}

允许列表

您可以对照IMS客户端的许可列表验证一个令牌. 要使用允许列表, 请将您的令牌和一系列IMS客户端传递到 validateTokenAllowList()数字 :

const { Ims } = require('@adobe/aio-lib-ims')
const ims = new Ims()

const token = params.theToken // May be passed via header, parameter, or other input
const allowList = ['ironmaiden', 'metallica', 'gunsandroses']
const imsValidation = await ims.validateTokenAllowList(token, allowList)
if (!imsValidation.valid) {
  return new Error('Forbidden: This client is not allowed!')
}

捐款

欢迎捐款! 读取 贡献指南 更多信息.

许可证发放

这个项目根据Apache V2许可证获得许可. 见 自由主义 更多信息.

版本与发布记录

@adobe/aio-lib-ims 共发布 44 个版本,首次发布于 2020/02/26;过去 12 个月发布了 2 个版本。

版本发布日期距今
8.1.2latest2026/04/306 个月前
8.1.12025/11/1111 个月前
8.1.02025/06/161.4 年前
8.0.22025/04/071.6 年前
8.0.12025/03/121.7 年前
8.0.02025/02/191.7 年前

其他发布通道:next → 6.5.0-pre.2024-01-08.sha-690ba672。

关于 @adobe/aio-lib-ims 的常见问题

@adobe/aio-lib-ims 是什么?

Adobe IMS(身份管理系统) 支持模块提供低水平的IMS HTTP API访问以及更高水平的获取令牌支持.

如何安装 @adobe/aio-lib-ims?

在项目目录运行 npm install @adobe/aio-lib-ims,或使用 pnpm add / yarn add / bun add。

@adobe/aio-lib-ims 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@adobe/aio-lib-ims 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@adobe/aio-lib-ims 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@adobe/aio-lib-ims 可以商用吗?

@adobe/aio-lib-ims 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@adobe/aio-lib-ims 的下载量有多少?

根据 npm 官方下载统计,@adobe/aio-lib-ims 在 2026/10/05 – 2026/11/03 这 30 天内被下载 71,801 次,日均约 2,393 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@adobe/aio-lib-ims 还在维护吗?

最新版本 8.1.2 发布于 2026/04/30(6 个月前);至今共发布 44 个版本,其中过去 12 个月发布了 2 个;首次发布于 2020/02/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。