You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过GitHub GraphQL API程序化配置团队IDP组?求实现示例

能否通过GitHub GraphQL API程序化配置GitHub Team的IDP组?

可以,GitHub GraphQL API支持通过updateTeam mutation实现IDP组与GitHub Team的关联配置。操作前需满足以下前提:

  • 你的GitHub组织已启用SSO/SAML集成,且目标IDP组已同步至GitHub(或你明确知晓IDP组的groupName和groupProvider信息)
  • 你拥有目标Team的管理员权限
  • 使用的个人访问令牌(PAT)需包含admin:org或write:org权限范围

核心Mutation示例

以下是用于关联IDP组到Team的GraphQL mutation:

mutation UpdateTeamIdpGroup($teamId: ID!, $idpGroup: TeamIdpGroupInput!) {
  updateTeam(input: {
    id: $teamId,
    idpGroup: $idpGroup
  }) {
    team {
      id
      name
      idpGroup {
        groupName
        groupProvider
      }
    }
  }
}

变量说明

  • teamId: GitHub Team的唯一ID(可通过如下query获取目标组织下的Team列表及ID)
    query GetOrgTeams($orgLogin: String!) {
      organization(login: $orgLogin) {
        teams(first: 100) {
          nodes {
            id
            name
          }
        }
      }
    }
    
  • idpGroup: 包含两个必填字段
    • groupName: IDP中的组名称(例如Azure AD内的组显示名)
    • groupProvider: IDP提供商标识(如azuread、okta、saml,需匹配你的实际IDP类型)

实际请求示例(curl实现)

假设已获取Team ID和IDP组信息,可通过curl发送请求:

curl -X POST \
  -H "Authorization: bearer YOUR_GITHUB_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mutation UpdateTeamIdpGroup($teamId: ID!, $idpGroup: TeamIdpGroupInput!) { updateTeam(input: { id: $teamId, idpGroup: $idpGroup }) { team { id name idpGroup { groupName groupProvider } } } }",
    "variables": {
      "teamId": "TEAM_ID_HERE",
      "idpGroup": {
        "groupName": "你的IDP组名称",
        "groupProvider": "azuread"
      }
    }
  }' \
  https://api.github.com/graphql

额外注意事项

  • 若需移除已关联的IDP组,只需将idpGroup变量设为null即可
  • 目标IDP组必须已在GitHub组织的SSO设置中完成同步,否则请求会返回错误
  • 批量配置多个Team时,可循环遍历Team列表,逐个调用该mutation完成配置

内容的提问来源于stack exchange,提问作者Raphael Perrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:07:06