SuperAPI AI 工具集

jfrog-oidc-setup

部署与运维

查看项目

更新于 10-16 09:10

技能介绍

用途

JFrog OIDC Setup 用于在 GitHub Actions 与 JFrog Platform 之间配置 OpenID Connect (OIDC) 集成,使 CI 工作流无需存储长期密钥即可完成认证。GitHub Actions 会签发短期令牌,JFrog 校验并将其换取为访问权限。

主要能力

  • 检查用户偏好(清单中的 github.oidc_setup)以及订阅是否支持 OIDC(OIDC_AVAILABLE)。
  • 通过 JFrog 许可证接口读取订阅类型,判断是否为 enterprise_xray 或 enterprise_plus 系列。
  • 根据 github_host 判断 GitHub 类型:公共 GitHub(github.com)使用签发方 https://token.actions.githubusercontent.com、provider_type 为 GitHub;GitHub Enterprise 使用 https://{github_host}/_services/token、provider_type 为 Generic(避免组织校验错误)。
  • 检查是否已存在相同 issuer_url 的 OIDC 提供方,若不存在则创建(提供方名称分别为 github-oidc 或 github-enterprise-oidc)。
  • 为每个仓库创建身份映射:主干分支映射(priority 100,claims 含 repository 与 ref: refs/heads/main)和 PR 映射(priority 90,claims 仅含 repository)。
  • 返回 oidc_provider_name 以及创建或复用的映射摘要。

使用方式

技能接收以下输入:project_key(JFrog 项目键)、github_repos(owner/repo 列表)、github_host(GitHub 主机)、OIDC_SETUP(来自清单 github.oidc_setup 的布尔值)、OIDC_AVAILABLE(来自前置订阅检查的布尔值)。

流程:

  1. 先检查偏好与可用性。若 OIDC_SETUP 为 false,则跳过整个技能并返回 oidc_provider_name 为空。若 OIDC_SETUP 为 true 但 OIDC_AVAILABLE 为 false,则立即中止并返回错误。只有两者都为 true 才继续。
  2. 如尚未完成,执行订阅检查,并依据清单偏好进行强制判断。
  3. 根据 github_host 确定 GitHub 类型与签发方 URL。
  4. 查询现有提供方,若匹配则复用,否则创建。
  5. 为每个仓库检查现有身份映射,若无覆盖则创建主干与 PR 映射。
  6. 处理完毕后报告结果,提示 CI 工作流技能将在 setup-jfrog-cli 动作中使用 oidc-provider-name: {provider_name}。

关键实现注意:issuer_url 必须位于顶层字段;scope 必须包含项目键,如 applied-permissions/roles:{PROJECT_KEY}:Developer;409 冲突视为成功。

适用场景

  • 使用 GitHub Actions 进行 CI 并希望避免在 JFrog 中存储长期密钥的团队。
  • 需要区分主干分支(部署访问)与 PR(只读访问)权限的场景。
  • 同时使用公共 GitHub 或 GitHub Enterprise 的组织。

限制

  • 订阅必须为企业版 X 或企业版+,否则中止;如请求了 OIDC 但订阅不支持,则硬性停止。
  • GitHub Enterprise 需使用 provider_type Generic,否则可能出现组织校验错误。
  • 身份映射的 claims 必须与 GitHub 令牌声明匹配(区分大小写),否则出现“未匹配身份映射”。
  • 权限范围需包含项目键,否则返回“token_spec Invalid scope”。
  • 提供的权限范围级别包括 Developer、Contributor、Release Manager。