Маркер идентификатора из федерации Azure AD не содержит утверждения ролей

Я создал клиент Azure B2C и пользовательский IDP для Azure Active Directory (AD). Я создал поток пользователей из B2C для интеграции в Azure AD и получения токена доступа.

Шаги, которым я следовал.

  • Создано приложение Azure AD
  • Сгенерировал секрет
  • Созданы пользовательские роли
  • Назначение пользовательских ролей пользователям из корпоративных приложений AD
  • Создал IDP в B2C
  • Создано B2C приложение
  • Создал политику входа в систему
  • Добавлен IDP для федерации
  • Запустить пользовательский поток
  • Вход по федерации

Лазурный AD успешно получает маркер (idp_access_token) в результате федерации. но проблема в том, что токен, полученный из Azure AD, не содержит утверждения ролей. Я создал две роли приложения и назначил их пользователю. Но я не видел внутри жетона никаких ролей.

Я следил за следующей документацией. https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

Разве это не относится к федерациям? Каков точный способ получить роли приложения, назначенные федерацией.

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

Вот необходимые данные для создания B2C IDP.

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

Как сопоставить эти детали с решением для осциллографа?


person Buddhika Priyabhashana    schedule 25.02.2021    source источник
comment
Используйте jwt.ms для анализа вашего токена доступа и предоставления снимков экрана.   -  person Carl Zhao    schedule 25.02.2021
comment
Вы говорите о токенах id или токенах доступа?   -  person Carl Zhao    schedule 25.02.2021
comment
@CarlZhao Я обновил вопрос скриншотом. Это idp_access_token, который содержится в основном токене.   -  person Buddhika Priyabhashana    schedule 25.02.2021
comment
Вы используете неправильный api, не используйте ms graph api, измените свой scope на веб-api.   -  person Carl Zhao    schedule 25.02.2021
comment
см .: docs.microsoft.com/en-us/azure/active-directory/develop/   -  person Carl Zhao    schedule 25.02.2021
comment
ms graph api использует токен v1.0. В токене нет roles требований. Для получения токена 2.0 вам необходимо использовать собственный API. Маркер будет содержать заявку roles. Итак, вам нужно открыть api, защищенный Azure.   -  person Carl Zhao    schedule 25.02.2021
comment
@CarlZhao, спасибо за ответ. Не могли бы вы рассказать мне о процессе? Есть ли документация по изменению типа токена или что-то в этом роде?   -  person Buddhika Priyabhashana    schedule 25.02.2021
comment
Подождите, я отправлю ответ и подробно опишу процесс.   -  person Carl Zhao    schedule 25.02.2021
comment
@CarlZhao очень ценю это   -  person Buddhika Priyabhashana    schedule 25.02.2021
comment
Я показал демонстрацию использования Azure AD. Если мой ответ полезен для вас, вы можете принять его как ответ (щелкните галочку рядом с ответом, чтобы переключить его с серого на заполненный).   -  person Carl Zhao    schedule 25.02.2021
comment
конечно да. ценить это.   -  person Buddhika Priyabhashana    schedule 25.02.2021


Ответы (1)


Вам необходимо создать два приложения в Azure AD, одно из которых представляет клиентское приложение, а другое - приложение api, а затем использовать клиентское приложение для вызова приложения api.

Во-первых, вам нужно открыть API серверного приложения, защищенного Azure, и добавить клиентское приложение:

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

Затем вам нужно установить приложение api AppRole, которое является вашей настраиваемой ролью, и оно будет отображаться в манифесте.

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

Затем вы можете назначить роль пользователю. Перейдите в корпоративное приложение ›ваше приложение api› Пользователи и группы.

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

Затем перейдите в клиентское приложение, предоставьте клиентскому приложению доступ к вашему backend api:

  • В разделе «Разрешения API» нажмите «Добавить разрешение», затем перейдите на вкладку «Мои API».
  • Найдите свое внутреннее приложение и выберите соответствующую область.
  • Щелкните "Добавить разрешения".
  • Предоставьте согласие администратора для ваших API.

Затем вам нужно использовать поток кода аутентификации, чтобы получить токен доступа, который требует, чтобы вы вошли в систему и получили код авторизации, а затем использовали код авторизации для погашения токена доступа.

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

Разберите токен v2.0, он содержит как scp утверждения, так и roles утверждения.

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

person Carl Zhao    schedule 25.02.2021
comment
Это действительно полезно. Теперь я жду согласия администратора. Как вы получили код для запроса почтальона? - person Buddhika Priyabhashana; 25.02.2021
comment
@BuddhikaPriyabhashana Это URL-адрес, по которому я получаю код авторизации из браузера: https://login.microsoftonline.com/e4c9ab4e-bd27-40d5-8459-23xxxxxxxxxx/oauth2/v2.0/authorize? client_id=5f11e827-4b37-4f1f-aa05-33xxxxxxxxxx &response_type=code &redirect_uri=https://jwt.ms/index &response_mode=query &scope=api://c848e37d-f64d-4cd8-b9bf-0b2xxxxxxxxxx/read &state=12345 - person Carl Zhao; 25.02.2021
comment
В случае федерации IDP мне нужно добавить данные AD, чтобы создать IDP, связанный с моим клиентом B2C. Какие данные необходимы для создания IDP? Мне нужно добавить следующие детали. * URL-адрес метаданных * идентификатор клиента * секрет клиента * область действия * тип ответа и т. д. Я обновил вопрос, добавив снимок экрана. - person Buddhika Priyabhashana; 25.02.2021
comment
@BuddhikaPriyabhashana Вы видели этот документ? docs.microsoft.com/ en-us / azure / active-directory-b2c / - person Carl Zhao; 26.02.2021
comment
да, я уже настроил его для общего сценария. Но мне нужно настроить его на недавно созданную область действия, как вы меня направляли. но проблема в том, что эта вновь созданная область не имеет секрета клиента. и какое значение должно быть у конфигурации IDP? как указать IDP для области, содержащей роли пользователей. - person Buddhika Priyabhashana; 01.03.2021
comment
Я понял. Значение поля области действия конфигурации IDP - ‹scope› + openid + profile - person Buddhika Priyabhashana; 01.03.2021