在B2C租户中,我添加了一个新的“自定义用户”属性:org
我添加了org
作为声明,以便用户登录时可以看到自定义声明。
我现在想在代码中更新此值。我尝试将PATCH
请求发送到适当的端点:
https://graph.windows.net/myb2c.onmicrosoft.com/users/userObjectId?api-version=1.6
但是收到以下错误:
One or more property values specified are invalid.
这是我要发送的JSON:
{ "extension_org": "1234" }
还有其他方法需要更新此值吗?
屏幕截图供参考:
答案 0 :(得分:2)
如果您使用图表API获取B2C扩展应用程序的扩展属性,则会在名称中看到应用程序ID。因此,扩展名将为extension_{appId}_org
。
要在B2C目录中找到应用程序ID,请转到Azure Active Directory刀片服务器,单击“应用程序注册”,然后单击“查看所有应用程序”。您会看到一个b2c_extension_app
。单击该按钮,它将显示其应用程序ID。
如果您更喜欢使用AAD Graph API,则可以将应用程序端点与过滤器一起使用以获取应用程序ID:... /applications?api-version=1.6&$filter=startswith(displayName, 'b2c-extensions-app')
。这样将返回JSON:
{
"odata.metadata": "https://graph.windows.net/{tenant}.onmicrosoft.com/$metadata#directoryObjects/Microsoft.DirectoryServices.Application",
"value": [{
"odata.type": "Microsoft.DirectoryServices.Application",
"objectType": "Application",
"objectId": "319f43e4-6b2e-4de8-abdb-549ca5c0626",
"deletionTimestamp": null,
"acceptMappedClaims": null,
"addIns": [],
"appId": "8588c037-999f-4d05-8cc0-8e2e5f9de30",
"appRoles": [],
"availableToOtherTenants": false,
"displayName": "b2c-extensions-app. Do not modify. Used by AADB2C for storing user data.",
"errorUrl": null,
"groupMembershipClaims": null,
"homepage": "https://extensions.cpim.windows.net",
"identifierUris": ["https://extensions.cpim.windows.net"],
.
.
.
}
]
}
appId是您想要的extension_{appId}_org
的值
答案 1 :(得分:0)
我知道它是这样工作的:
// Retrieving the user by email
var user = B2CService.GetUser(email);
// Crafting the extension attribute name
var extensionAttribute = $"extension_REPLACEWITHYOURB2CEXTENSIONSAPPID_AttributeName";
// Craft the URL
var url = B2CService.BuildUrl($"/users/{user.ObjectId}");
var jsonUpdate = new JObject
{
{ extensionAttribute, "ValueHere" }
};
// Patching the extension attribute value...
await B2CService.SendGraphRequest(new HttpMethod("PATCH"), url, jsonUpdate.ToString());
答案 2 :(得分:0)
要添加到此信息,请确保删除ApplicationID中的破折号。请参阅Microsoft article。
"extension_831374b3bd5041bfaa54263ec9e050fc_org": "212342"
答案 3 :(得分:-1)
尝试一下,它对我有用
PATCH
"/users/{objectId}/extension_{objectId}_org"
{ "value": "1234" }
不修补整个用户,仅修补属性。