Azure ad b2c 添加具有自定义声明的用户

Azure ad b2c 添加具有自定义声明的用户,azure-ad-b2c,Azure Ad B2c,我在通过Microsoft Graph Api将用户添加到Azure B2C时遇到了一个问题,需要自定义声明。我已经添加了一个名为“sample”的声明,当我通过注册添加用户时,该声明将填充我输入的值 但是,我需要通过代码添加用户,而不是自我注册。我有以下代码将添加一个用户 // create the connection var confidentialClientApplication = ConfidentialClientApplicationBuilder .Create(cl

我在通过Microsoft Graph Api将用户添加到Azure B2C时遇到了一个问题,需要自定义声明。我已经添加了一个名为“sample”的声明,当我通过注册添加用户时,该声明将填充我输入的值

但是,我需要通过代码添加用户,而不是自我注册。我有以下代码将添加一个用户

// create the connection
var confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantId)
    .WithClientSecret(clientSecret)
    .Build();

var authProvider = new ClientCredentialProvider(confidentialClientApplication);

var client = new GraphServiceClient(authProvider);

var user = new User
{
    AccountEnabled = true,
    DisplayName = "John Smith",
    UserPrincipalName = $"john.smith@{tenantId}",
    MailNickname = "john.smith",
    PasswordProfile = new PasswordProfile
    {
        ForceChangePasswordNextSignIn = false,
        Password = "P@ssword1"
    },
};

var addedUser = await client.Users.Request().AddAsync(user);

这是相同的,但使用HTTP direct。这将再次添加用户

POST /v1.0/users HTTP/1.1
Host: graph.microsoft.com
SdkVersion: postman-graph/v1.0
Content-Type: application/json
Authorization: Bearer [redacted]
User-Agent: PostmanRuntime/7.20.1
Accept: */*
Cache-Control: no-cache
Postman-Token: [redacted]
Host: graph.microsoft.com
Accept-Encoding: gzip, deflate
Content-Length: 325
Connection: keep-alive
cache-control: no-cache

{
    "accountEnabled": true,
    "displayName": "Joe Blogs",
    "mailNickname": "joe.blogs",
    "userPrincipalName": "joe.blogs@[redacted].onmicrosoft.com",
    "passwordProfile": {
        "forceChangePasswordNextSignIn": true,
        "password": "P@ssword1"
    },
    "passwordPolicies": "DisablePasswordExpiration"
}
正如我所说,上面的代码将添加一个用户,但我不知道如何同时添加自定义声明。第一组代码使用Microsoft.Graph nuget包。第二个来自Postman中的一个直接http调用

在阅读文档时,我似乎在兜圈子,似乎看不到如何在新的B2C v2中做到这一点

有人知道吗


干杯

好的,我想好了怎么做。需要像上面那样添加用户,然后用自定义声明更新它。他们的关键是声明的名称格式为

扩展名uxxxxx u样本

其中xxxxx具有b2c扩展应用程序的应用程序id,该应用程序是内置应用程序

因此,一旦添加了用户,下面的代码将添加自定义声明

var confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantId)
    .WithClientSecret(clientSecret)
    .Build();

var authProvider = new ClientCredentialProvider(confidentialClientApplication);

var client = new GraphServiceClient(authProvider);

var dictionary = new Dictionary<string, object>();
dictionary.Add("extension_xxxxx_sample", "abcd");

await client.Users[$"john.smith@{tenantId}"]
    .Request()
    .UpdateAsync(new User()
    {
        AdditionalData = dictionary
    });
var secretentialclientapplication=secretentialclientapplicationbuilder
.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
var authProvider=新的客户端凭据提供程序(机密客户端应用程序);
var client=新的GraphServiceClient(authProvider);
var dictionary=newdictionary();
添加(“扩展名xxxxx样本”,“abcd”);
等待client.Users[$“john.smith@{tenantId}”]
.Request()
.UpdateSync(新用户()
{
附加数据=字典
});
关键是,b2c扩展应用程序的应用程序id可能为7e4ff0cd-825a-47ba-a08c-b13a4244b4ce。但是,您可以添加以下声明

扩展件7e4ff0cd825a47baa08cb13a4244b4ce样本

不与

分机7e4ff0cd-825a-47ba-a08c-b13a4244b4ce样本