.net 通过Microsoft Graph API创建新的广告B2C用户

.net 通过Microsoft Graph API创建新的广告B2C用户,.net,microsoft-graph-api,azure-ad-b2c,.net,Microsoft Graph Api,Azure Ad B2c,我决定使用Microsoft.Graph.netsdk,而不是在手动HTTP请求中使用旧的Azure Graph API 问题是,当我试图用一些电子邮件创建一个新用户时,例如。areller@gmail.com var req = _client.Users.Request(); var userRes = req.AddAsync(new User() { AccountEnabled = true, DisplayName = user.Email, MailNick

我决定使用
Microsoft.Graph
.netsdk,而不是在手动HTTP请求中使用旧的Azure Graph API

问题是,当我试图用一些电子邮件创建一个新用户时,例如。areller@gmail.com

var req = _client.Users.Request();
var userRes = req.AddAsync(new User()
{
    AccountEnabled = true,
    DisplayName = user.Email,
    MailNickname = user.GivenName,
    GivenName = user.GivenName,
    Surname = user.SurName,
    UserPrincipalName = user.Email,
    PasswordProfile = new PasswordProfile()
    {
        Password = user.Password,
        ForceChangePasswordNextSignIn = true
    },
    PasswordPolicies = "DisablePasswordExpiration, DisableStrongPassword",
    Country = user.Country,
    City = user.City,
    PostalCode = user.ZipCode
}).Result;
我得到一个异常,它说“Property userPrincipalName无效”

我只能在将租户的电子邮件用作域时创建用户,例如
areller@mytenant.onmicrosoft.com
但这不是我需要的。 我需要能够创建实际的外部用户编程

通过Azure Graph API,它可以正常工作
有没有办法让它与Microsoft Graph API一起工作?

目前,您不能使用Microsoft Graph在Azure AD B2C租户中创建用户,因为它不支持Azure AD B2C使用的一些用户属性(包括creationTypesignInNames属性)

你必须这么做

注意:当您在Azure AD B2C租户中创建用户并将creationType属性设置为
LocalAccount
,则不必设置userPrincipalName属性,因为它是包含外部用户电子邮件地址的signInNames属性。

根据Github at。 现在,您可以使用Microsoft Graph为Azure AD B2C创建新用户,代码来自

var result=wait graphClient.Users
.Request()
.AddAsync(新用户
{
givename=“Casey”,
姓氏=“詹森”,
DisplayName=“Casey Jensen”,
标识=新列表
{
新对象性()
{
signentype=“emailAddress”,
发卡机构=租户,
issuerasignedid=“凯西。jensen@example.com"
}
},
PasswordProfile=新的PasswordProfile()
{
Password=Helpers.PasswordHelper.GenerateNewPassword(4,8,4)
},
PasswordPolicys=“DisablePasswordExpiration”,
附加数据=扩展实例
});

这是我的想法,但我找不到任何证实。你知道azure graph api是否有.NET sdk吗?嗨@areller。参见.Github sample-Upvoted,当我试图通过Java实现这一点时,这里有足够的信息来帮助我添加一个(联邦?)用户。谢谢
var result = await graphClient.Users
            .Request()
            .AddAsync(new User
            {
                GivenName = "Casey",
                Surname = "Jensen",
                DisplayName = "Casey Jensen",
                Identities = new List<ObjectIdentity>
                {
                    new ObjectIdentity()
                    {
                        SignInType = "emailAddress",
                        Issuer = tenantId,
                        IssuerAssignedId = "casey.jensen@example.com"
                    }
                },
                PasswordProfile = new PasswordProfile()
                {
                    Password = Helpers.PasswordHelper.GenerateNewPassword(4, 8, 4)
                },
                PasswordPolicies = "DisablePasswordExpiration",
                AdditionalData = extensionInstance
            });