Настраиваемые атрибуты B2C не отображаются при создании с использованием API схемы каталога API Graph

Использование API расширения, описанного здесь:

https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad-graph-api-directory-schema-extensions

в сочетании с образцом клиента B2C Graph:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet.

Я создал настраиваемый атрибут через 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"
      ]
    }
    ...

person G Mac    schedule 16.05.2017    source источник


Ответы (1)


Когда вы добавляете атрибут расширения через портал, он создается в каталоге и принадлежит b2c-extensions-app приложению и, а также добавляется в политику клиента. Это то, что позволяет вам использовать их в политиках приложений по мере их создания.

Когда вы создаете атрибут расширения с помощью Graph API, он не добавляется в политику и обычно создается в приложении, отличном от b2c-extensions-app. Вы можете использовать эти свойства непосредственно в настраиваемых политиках, но они не будут отображаться на портале и не могут использоваться в политиках, созданных через портал.

Лучше всего просто создать свойства расширения через портал, чтобы они были доступны для всех политик. Это позволяет клиентам смешивать и сопоставлять настраиваемые политики со встроенными пользовательскими потоками b2c.

person Omer Iqbal    schedule 13.06.2019