Azure B2C以编程方式更新自定义用户属性

时间:2018-06-29 14:36:02

标签: azure-ad-b2c

在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" }

还有其他方法需要更新此值吗?

屏幕截图供参考:

enter image description here

enter image description here

4 个答案:

答案 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" }

不修补整个用户,仅修补属性。