mcpField
D
da-auth

da-auth

github.com/adobe安全3161.0k 次安装今天更新
代码仓库

关于 da-auth

用于获取并验证调用 DA Admin API 所需 Adobe IMS 访问令牌的技能。它会先检查缓存令牌,也支持通过辅助 CLI 浏览器登录、DA MCP 服务或手动输入令牌进行身份验证。

主要功能

  1. 01检查缓存令牌是否有效
  2. 02通过浏览器登录获取令牌
  3. 03支持 DA MCP 身份验证
  4. 04通过 DA API 验证令牌

适用场景

  1. 01推送 DA 内容前进行身份验证
  2. 02列出 DA 存储库中的文档
  3. 03启动 DA 内容预览

MCP 相关

如果会话中启用了 DA MCP 服务,该技能会引导调用方使用其身份验证工具启动 OAuth 并获取令牌。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/adobe/skills --skill da-auth

安装后在 Claude Code 中输入/da-auth确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.releaserc.json
CHANGELOG.md
package.json

详细介绍

DA 认证

获取有效的 Adobe IMS 访问令牌,并将其存储在 DA_TOKEN 中,以供后续调用 admin.da.live API 时使用。

何时使用此技能

每当你需要调用 DA Admin API(admin.da.live)且当前作用域中没有有效令牌时,都应使用此技能。常见情况:

  • 在 DA 中推送或更新页面内容
  • 列出 DA 存储库中的文档
  • 触发 DA 内容预览

以下情况请勿使用此技能:

  • 你已在当前会话中获取 DA_TOKEN,且令牌尚未过期(令牌有效期约为 1 小时,另有 60 秒缓冲时间)
  • create-site 技能已在其自身流程中处理身份验证
  • 当前会话中有 DA MCP 服务处于活动状态 — 请直接使用其身份验证工具

前提条件

  • 已安装 Node.js 18+
  • 机器可访问浏览器(用于 OAuth 流程)
  • 可访问网络 ims-na1.adobelogin.com

相关技能

  • create-site — 新站点接入时包含自身的 DA 身份验证步骤;在该流程中请勿单独调用 da-auth
  • content-driven-development — 将编写的内容推送到 DA 之前,先使用 da-auth
  • building-blocks — 如果需要将测试内容推送到 DA 以进行区块开发,请使用 da-auth
  • snowflake — 在第 5 阶段(往返)之前调用 da-auth,以便 snowflake 将转换后的页面 PUT 到 DA 时 $DA_TOKEN 已设置
  • da-content — 获取 $DA_TOKEN 后如何使用它的参考(Source API、预览/发布)

第 1 步:检查缓存的令牌

触发浏览器登录之前,检查是否已缓存有效令牌。

DA_TOKEN=$(node -e "
  const fs = require('fs');
  const p = process.env.HOME + '/.aem/da-token.json';
  try {
    const t = JSON.parse(fs.readFileSync(p, 'utf8'));
    if (t.expires_at > Date.now() + 60000) process.stdout.write(t.access_token);
  } catch {}
")

如果 DA_TOKEN 非空,请跳至第 3 步。

第 2 步:获取令牌*(需要登录)*

选择适合当前环境的选项:

选项 A(优先)— da-auth-helper CLI:

da-auth-helper 工具会处理完整的 IMS OAuth 2.0 隐式流程,将令牌缓存到 ~/.aem/da-token.json,并将令牌输出到 stdout。

# Run directly without a global install
DA_TOKEN=$(npx github:adobe-rnd/da-auth-helper token)

如果无法使用 npx 或速度较慢,请先全局安装:

npm install -g github:adobe-rnd/da-auth-helper
DA_TOKEN=$(da-auth-helper token)

这将打开一个浏览器窗口。请告知用户:

请在刚打开的浏览器窗口中完成 Adobe IMS 登录。登录后,系统会自动捕获令牌。

成功标志:DA_TOKEN 是一个非空 JWT 字符串,以 eyJ 开头。

选项 B — DA MCP 服务:

如果当前会话中已配置 DA MCP 服务,请使用其身份验证工具启动 OAuth 流程,并从响应中获取令牌。

选项 C — 手动粘贴(最后手段):**

我需要 Adobe IMS 访问令牌才能将内容推送到 DA。你可以从浏览器中复制一个令牌:

  1. 打开 da.live 并登录
  2. 打开开发者工具 → Network 标签页 → 找到任意一个发往 admin.da.live 的请求
  3. 复制 Authorization: Bearer <token> 值(不包括 Bearer 前缀)
  4. 在这里粘贴

第 3 步:验证令牌是否有效

继续操作之前,确认 DA API 接受此令牌:

curl -s -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer {{DA_TOKEN}}" \
  "https://admin.da.live/list/{{ORG}}/{{REPO}}"

成功标志:HTTP 200。令牌有效 — DA_TOKEN 已准备好供调用此技能的技能使用。

故障排除

症状可能原因解决方法
第 1 步后 DA_TOKEN 为空没有缓存令牌,或令牌已过期继续执行第 2 步
浏览器窗口未打开npx / da-auth-helper 被阻止,或环境为无头环境使用选项 B(MCP)或选项 C(手动粘贴)
npx github:adobe-rnd/da-auth-helper 失败GitHub 软件包注册表受到网络限制使用选项 B(DA MCP 服务)或选项 C(手动粘贴令牌)
第 3 步返回 401令牌在步骤之间过期重新执行第 2 步以刷新令牌
第 3 步返回 403已通过身份验证的用户无权访问 {{ORG}}/{{REPO}}请用户确认其对该组织/存储库的 DA 权限

参考资料

评论

支持 Markdown