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

如何通过Microsoft Graph创建以Gmail为用户名的Azure AD本地账户?

解决用Microsoft Graph创建带外部邮箱登录的Azure AD本地用户问题

这个报错的核心原因是Azure AD本地用户的userPrincipalName必须属于租户的已验证域名(比如默认的xxx.onmicrosoft.com或者你添加的自定义域名),不能直接把外部邮箱(比如Gmail)设为UPN——这是Graph API和旧ADAL时代API的关键区别。

要实现用Gmail地址作为登录名创建本地用户,你需要调整两个关键属性:

  1. 给userPrincipalName设置一个符合租户域名规则的值
  2. 通过SignInNames属性配置用户的登录邮箱(也就是你的Gmail地址)

修改后的代码示例

// 替换成你的租户已验证域名(比如xxx.onmicrosoft.com)
var tenantDomain = "yourtenant.onmicrosoft.com";

var user = new User
{
    AccountEnabled = true,
    DisplayName = "Vetrivel MP",
    MailNickname = "vetrivelmp1",
    // UPN必须使用租户域名,这是Graph API的硬性要求
    UserPrincipalName = $"vetrivelmp1@{tenantDomain}",
    PasswordProfile = new PasswordProfile
    {
        ForceChangePasswordNextSignIn = true,
        Password = "Test123!@#"
    },
    // 这里设置用户用来登录的外部邮箱
    SignInNames = new List<SignInName>
    {
        new SignInName
        {
            Type = "emailAddress",
            Value = "vetrivelmp1@gmail.com"
        }
    }
};

var graphClient = await _msGraphHelper.GetMsGraphClientAsync();
var createdUser = await graphClient.Users.Request().AddAsync(user);

关键说明

  • userPrincipalName是Azure AD内部标识用户的核心属性,必须符合租户域名规则,否则会触发Request_BadRequest错误。
  • SignInNames是专门用来配置用户登录凭证的集合,支持邮箱、手机号等多种登录方式。用户登录时,直接输入这个Gmail地址即可,不需要使用UPN。
  • 额外提醒:确保你的密码符合Azure AD的密码策略(比如长度、复杂度要求),否则也可能创建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:54:55