首页 > 解决方案 > 如何在 AD B2C 中使用图形 api/sdk

问题描述

我试图简单地使用 Graph API sdk 针对我的 AD B2C 租户创建一个用户,但我一直遇到问题。我在这里关注文档:https ://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=csharp

我收到的第一个错误是“userPrincipalName 属性的域部分无效。您必须在您的组织中使用经过验证的域名之一”。环顾四周后,我发现这个文档指出必须将 CreationType 属性设置为“LocalAccount”。当我尝试这样做时,我得到了“一个或多个属性包含无效值”的错误。</p>

该错误没有提供有关哪个属性无效的任何详细信息!Microsoft 的某个人可以向我指出如何使其正常工作的适当文档吗?在 API 可能针对 AD 而不是 AD B2C 的文档中似乎存在一些混淆。但我没有 AD 租户,只有 AD B2C 租户,这就是我的目标。同样,我使用的是最新版本的 SDK。

标签: asp.net-mvcmicrosoft-graph-apiazure-ad-b2c

解决方案


我能够弄清楚这个问题。对于 AD B2C,我应该将 ObjectIdentity 附加到要创建的用户对象。

下面是代码:

    var identity = new ObjectIdentity
    {
        Issuer = Globals.Tenant,
        IssuerAssignedId = email,
        SignInType = "emailAddress"
    };
    var graphClient = GetGraphServiceClient();
    var user = new User
    {
        DisplayName = fullName,
        PasswordProfile = new PasswordProfile
        {
            Password = password,
            ForceChangePasswordNextSignIn = forceChangePasswordSignIn
        },
        PasswordPolicies = "DisablePasswordExpiration",
        AccountEnabled = enabled,
        CreationType = "LocalAccount",
        Identities = new ObjectIdentity[] { identity }
    };
    var userInfo = await graphClient.Users.Request().AddAsync(user);
    return userInfo;

推荐阅读