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

如何使用Go SDK以编程方式创建Azure AD用户

Azure Go SDK 编程创建Azure AD用户实现方案

该需求可完全实现,我在实际业务中落地过相同逻辑,以下是可直接参考的实现步骤和代码:

前置依赖准备

  • 安装所需的Go SDK包,注意不要使用已废弃的旧版Azure AD Graph SDK,统一使用官方维护的新版Microsoft Graph相关SDK:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
go get github.com/microsoftgraph/msgraph-sdk-go
go get github.com/microsoftgraph/msgraph-sdk-go/models
  • 提前在Azure AD中注册服务主体,为该服务主体分配Microsoft Graph的应用权限User.ReadWrite.All,并完成管理员授权同意
  • 收集好认证所需的三个核心参数:租户ID(Tenant ID)、服务主体客户端ID(Client ID)、服务主体客户端密钥(Client Secret)

示例代码

package main

import (
	"context"
	"log"

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

func main() {
	// 替换为你自己的参数
	tenantID := "你的Azure租户ID"
	clientID := "你的服务主体客户端ID"
	clientSecret := "你的服务主体客户端密钥"

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

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

	// 构造待创建的用户对象
	newUser := models.NewUser()
	// 用户主体名,后缀必须是租户下已验证的域名
	upn := "testuser01@你的租户默认域名.onmicrosoft.com"
	newUser.SetUserPrincipalName(&upn)
	displayName := "测试用户01"
	newUser.SetDisplayName(&displayName)
	mailNickname := "testuser01"
	newUser.SetMailNickname(&mailNickname)
	// 账号启用状态
	accountEnabled := true
	newUser.SetAccountEnabled(&accountEnabled)
	// 初始密码配置,密码必须满足Azure AD复杂度要求
	passwordProfile := models.NewPasswordProfile()
	initPassword := "你的初始密码@123456"
	passwordProfile.SetPassword(&initPassword)
	// 首次登录是否强制修改密码,按需配置
	forceChangePasswordNextSignIn := true
	passwordProfile.SetForceChangePasswordNextSignIn(&forceChangePasswordNextSignIn)
	newUser.SetPasswordProfile(passwordProfile)

	// 发起创建用户请求
	createdUser, err := graphClient.Users().Post(context.Background(), newUser, nil)
	if err != nil {
		log.Fatalf("创建Azure AD用户失败: %v", err)
	}

	log.Printf("用户创建成功,用户ID: %s,用户主体名: %s", *createdUser.GetId(), *createdUser.GetUserPrincipalName())
}

常见注意事项

  • 不要导错包:旧版github.com/Azure/azure-sdk-for-go/services/activedirectory是管理Azure资源层面AD相关资源的包,无法操作目录下的用户对象,必须使用Microsoft Graph SDK
  • 权限配置不要选成委托权限,服务主体后台调用必须使用应用类型的User.ReadWrite.All权限,配置后一定要点「授予管理员同意」,否则调用会返回403
  • 用户主体名的后缀必须是你租户下已经完成验证的域名,使用未验证的自定义域名会直接创建失败
  • 初始密码必须满足复杂度要求:长度不小于8位,同时包含大小写字母、数字、特殊字符,不能包含用户显示名、用户名里的连续字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:09:17