Использование настраиваемых атрибутов для хранения дополнительной информации о пользователе в Azure AD B2C - PullRequest
0 голосов
/ 05 августа 2020

Я хотел бы хранить дополнительную информацию о пользователях в моем экземпляре Azure AD B2 C. Я сделал следующее:

  1. Я создал новый настраиваемый атрибут , имя этого атрибута - Producer

  2. Я добавил все необходимые разрешения для регистрации нового приложения, которое предназначено для использования Azure AD B2 C API через Graph API

  3. Я вызываю Graph API, чтобы установить настраиваемую атрибуцию для одного из пользователей: POST https://graph.microsoft.com/v1.0/users/ {user-id} со следующими данными согласно этому примеру

    {"officeLocation": "US", "extension_XXX_Producer": "AN"}

  4. Когда я пытаюсь запросить информацию об этом пользователе с помощью Graph API: GET https://graph.microsoft.com/v1.0/users/ {user-id} , я не получаю ничего похожего на мой настраиваемый атрибут

После прочтения Azure AD B2 C документации кажется например, настраиваемые атрибуты можно активировать, только если я добавлю их в один из пользовательских потоков, но это не то, чего хочет наш бизнес. Они хотели бы иметь другой пользовательский интерфейс и продукт, отвечающий за управление настраиваемыми атрибутами, поэтому я хотел бы использовать Graph API для управления настраиваемыми атрибутами.

Не могли бы вы порекомендовать мне, как я могу управлять настраиваемыми атрибутами без включая их в Azure AD B2 C пользовательские потоки?

Я также нашел пару ресурсов, где люди рекомендуют использовать Azure AD Graph API, но Microsoft сообщает мне в Azure, что этот API является устаревшим (я проверил его, он работает, но у меня есть некоторые опасения из-за устаревшего API) :

введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 13 августа 2020

Что я сделал:

  1. Добавьте настраиваемый атрибут (например, «Производитель») с помощью Azure Portal AD B2 C

  2. Добавьте этот атрибут в Заявления приложения пользовательского потока входа

  3. Используйте Graph API, чтобы перечислить свойства расширения b2 c -расширения-приложение. Не изменять. Используется AADB2 C для хранения пользовательских данных . (где хранятся настраиваемые атрибуты, прочтите https://docs.microsoft.com/en-us/azure/active-directory-b2c/extensions-app, https://docs.microsoft.com/en-us/graph/api/resources/extensionproperty?view=graph-rest-beta и https://docs.microsoft.com/en-us/graph/api/application-list-extensionproperty?view=graph-rest-beta&tabs=http).

    клиент - это инициализированный MicrosoftGraphClient, appObjectId - это идентификатор объекта приложения b2 c -extensions-app :

    async function getExtensionProperties(client, appObjectId) {
        return await client
            .api(`/applications/${appObjectId}/extensionProperties`)
            .version('beta')
            .get();
    }
    

    Ответ должен содержать строку вида:

    name: 'extension_<Application (client) ID of the b2c-extensions-app without the dashes>_Producer'
    

    Это имя настраиваемого атрибута в качестве свойства расширения.

  4. Используйте Graph API, чтобы задать свой настраиваемый атрибут пользователя.

    id - это идентификатор объекта пользователя в AD, атрибуты - { "extension_<Application (client) ID of the b2c-extensions-app without the dashes>_Producer": "your_value" }

    async function updateUser(client, id, attributes) {
        return await client
            .api(`/users/${id}`)
            .version('beta')
            .header("content-type", "application/json")
            .patch(attributes);
    }
    
  5. При входе в систему с использованием пользовательского потока signin в браузере с использованием MSAL для myMSALObj.getAccount().extension_Producer теперь устанавливается значение настраиваемого атрибута (примечание: extension_Producer без идентификатора приложения между extension и Producer ).

Этот ответ https://docs.microsoft.com/en-us/answers/questions/21843/how-to-set-custom-claims-for-a-user-in-azure-ad-b2.html от amanpreetsingh-msft очень помог решить эту проблему.

1 голос
/ 05 августа 2020

Я просмотрел предоставленный вами пример документа и заметил, что этот пример является демонстрацией с Azure Active Directory Graph, поэтому я предлагаю вам также попробовать использовать Azure Active Directory Graph. Когда вы используете api для запроса информации о пользователе, это выглядит так:

https://graph.windows.net/{tenant}.onmicrosoft.com/users/{user_id}?api-version = 1.6

Перед этим, как говорится в документе, вам необходимо получить токен доступа для api, а когда для предоставления разрешений вам необходимо предоставить Azure Active Directory Graph разрешений приложению.

Для AAD Graph это более старый API, который разрешает доступ только к данным каталога, и некоторые из его функций были перенесены из AAD Graph в Microsoft Graph. Но в некоторых случаях мы можем выполнить требования только с помощью AAD Graph.

см.: Разница между AAD Graph и Microsoft Graph .

...