通过 Microsoft Graph API 创建新的 AD B2C 用户

are*_*ler 2 .net azure-ad-b2c microsoft-graph-api

我决定使用Microsoft.Graph.NET SDK,而不是使用带有手动 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;
Run Code Online (Sandbox Code Playgroud)

我收到一个异常,显示“属性 userPrincipalName 无效” 在此处输入图片说明

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

使用 Azure Graph API 它可以工作 有没有办法让它与 Microsoft Graph API 一起工作?

qng*_*yen 6

根据https://github.com/Azure-Samples/ms-identity-dotnetcore-b2c-account-management上的 Github 。现在您可以使用 Microsoft Graph 为 Azure AD B2C 创建新用户,代码来自https://github.com/Azure-Samples/ms-identity-dotnetcore-b2c-account-management/blob/master/src/Services/用户服务.cs

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
            });
Run Code Online (Sandbox Code Playgroud)


Chr*_*ett 5

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

为此,您必须使用 Azure AD Graph

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