Использование API расширения, описанного здесь:
в сочетании с образцом клиента B2C Graph:
Я создал настраиваемый атрибут через AD Graph API для расширений схемы каталогов с помощью этого API:
POST
https://graph.windows.net/contoso.onmicrosoft.com/applications/<applicationObjectId>/extensionProperties?api-version=1.6
{
name: "OrgRoleId",
dataType: "String",
targetObjects: [
"User"
]
}
(Обратите внимание, я изменил версию API на 1.6).
Созданные API настраиваемые атрибуты отображаются с использованием образца B2CGraphClient и имеют те же данные, что и зарегистрированные на портале Azure для B2C.
Однако эти созданные API настраиваемые атрибуты не отображаются в колонке «Атрибуты пользователя» портала Azure для клиента, в то время как настраиваемые атрибуты, созданные через портал Azure для клиента B2C, отображаются.
Обратите внимание, что я могу успешно читать и записывать эти значения расширения для пользователей (через Graph API). Я просто не могу поместить их в утверждения, потому что они не отображаются ни в колонке «Атрибуты пользователя», ни в колонке утверждений политики на портале Azure, и поэтому они не добавляются как утверждения к токену.
Что я упускаю / делаю неправильно?
Вывод из B2C.exe Get-extension-attribute <b2c-extensions-app objectId>
. *_Test1
появляется (портал создан), а *_UserRoleId
нет (API создан):
{
"odata.metadata": "https://graph.windows.net/<tenant_id>/$metadata#directoryObjects/Microsoft.DirectoryServices.ExtensionProperty",
"value": [
{
"odata.type": "Microsoft.DirectoryServices.ExtensionProperty",
"objectType": "ExtensionProperty",
"objectId": "f58bc813-632c-486b-bff1-61695eeab691",
"deletionTimestamp": null,
"appDisplayName": "",
"name": "extension_<object_id>_Test1",
"dataType": "String",
"isSyncedFromOnPremises": false,
"targetObjects": [
"User"
]
},
{
"odata.type": "Microsoft.DirectoryServices.ExtensionProperty",
"objectType": "ExtensionProperty",
"objectId": "5e69b2d9-1ab0-463f-a231-5c188e92b4a1",
"deletionTimestamp": null,
"appDisplayName": "",
"name": "extension_<object_id>_UserRoleId",
"dataType": "String",
"isSyncedFromOnPremises": false,
"targetObjects": [
"User"
]
}
...