我在通过自定义声明通过Microsoft Graph Api将用户添加到Azure B2C时遇到问题。我添加了一个称为“样本”的声明,当我通过注册添加用户时,该声明将填充我输入的值。
但是,我需要通过不具有自我注册功能的代码来添加用户。我有以下代码将添加用户
// 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。再次添加用户
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中做到这一点。
有人知道吗?
欢呼
答案 0 :(得分:0)
确定了如何执行此操作。需要像上面一样添加用户,然后使用自定义声明对其进行更新。他们的关键是声明具有
格式的名称extension_xxxxx_sample
其中xxxxx具有 b2c-extensions-app 应用程序的应用程序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
});
关键是 b2c-extensions-app 的应用ID可能为 7e4ff0cd-825a-47ba-a08c-b13a4244b4ce 。但是,您可以在声明中添加以下
extension_7e4ff0cd825a47baa08cb13a4244b4ce_sample
不配合
extension_7e4ff0cd-825a-47ba-a08c-b13a4244b4ce_sample