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