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

如何通过Go SDK在Azure AD中以编程方式创建新组

使用Go SDK在Azure Active Directory创建组实现方案

目前Azure AD的编程操作统一基于Microsoft Graph接口实现,官方维护的Go SDK可直接完成组创建操作,以下是完整实现流程和可运行示例。
注意:旧版Azure AD专属Go SDK已完全停止维护,所有新开发请使用基于Microsoft Graph的官方SDK

前置准备

  • 提前在Azure AD中注册应用,记录租户ID、客户端ID、客户端密钥
  • 为注册的应用分配对应权限:若使用守护程序/服务身份无用户交互运行,授予Group.Create应用权限;若需要带登录用户上下文操作,授予Group.ReadWrite.All委派权限,所有权限需完成管理员同意后才可生效
    注意:使用客户端密钥认证的服务场景,必须申请应用类型权限,委派权限仅在有用户登录交互的场景生效,混用会直接返回403无权限错误
  • 安装项目依赖,执行以下命令拉取SDK包:
go get github.com/microsoftgraph/msgraph-sdk-go
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

核心实现逻辑

  1. 使用客户端密钥凭证完成身份认证,初始化Graph服务客户端
  2. 构造待创建组的参数对象,根据要创建的组类型配置必填字段
  3. 调用客户端的组创建接口提交请求,拿到返回的组对象信息即可

可运行代码示例

package main

import (
	"context"
	"log"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/microsoftgraph/msgraph-sdk-go/models"
	graph "github.com/microsoftgraph/msgraph-sdk-go"
)

func main() {
	// 替换成你自己的Azure AD应用配置
	tenantID := "你的租户ID"
	clientID := "你的应用客户端ID"
	clientSecret := "你的应用客户端密钥"

	// 初始化客户端密钥认证凭证
	cred, err := azidentity.NewClientSecretCredential(tenantID, clientID, clientSecret, nil)
	if err != nil {
		log.Fatalf("初始化认证凭证失败: %v", err)
	}

	// 初始化Graph客户端
	graphClient, err := graph.NewGraphServiceClientWithCredentials(cred, []string{"https://graph.microsoft.com/.default"})
	if err != nil {
		log.Fatalf("初始化Graph客户端失败: %v", err)
	}

	// 构造待创建的安全组参数
	newGroup := models.NewGroup()
	displayName := "GoSDK测试创建的组"
	newGroup.SetDisplayName(&displayName)
	// 安全组必须设置SecurityEnabled为true
	securityEnabled := true
	newGroup.SetSecurityEnabled(&securityEnabled)
	// 非邮件启用的安全组MailEnabled设为false,MailNickname可按需设置
	mailEnabled := false
	newGroup.SetMailEnabled(&mailEnabled)
	mailNickName := "gosdktestgroup"
	newGroup.SetMailNickname(&mailNickName)
	// 可选:设置组描述
	description := "通过Go SDK自动创建的测试安全组"
	newGroup.SetDescription(&description)

	// 发起创建请求
	resp, err := graphClient.Groups().Post(context.Background(), newGroup, nil)
	if err != nil {
		log.Fatalf("创建组失败: %v", err)
	}

	log.Printf("组创建成功,组ID: %s", *resp.GetId())
	log.Printf("组名: %s", *resp.GetDisplayName())
}

常见配置说明

  • 若需要创建Microsoft 365组,需要将MailEnabled设为true,同时给GroupTypes字段赋值[]string{"Unified"},MailNickname为必填项
  • 创建组时可直接通过SetOwners()、SetMembers()方法传入所有者、成员的对象ID引用,无需创建组后再单独调用添加成员接口
  • 若遇到权限报错,优先检查应用权限是否已经授予并完成管理员同意,再确认认证时申请的权限范围是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:24:10