EntraID: как передать роли приложения ниже по течению

Я работаю над SPA (Blazor wasm), который использует AzureAD/EntraID с «потоком кода авторизации».

Приложение размещается в службе веб-API ASP.NET Core 8, которая на данный момент предоставляет некоторые простые API. Я настроил приложение на запрос и прикрепление токена нисходящего доступа (на основе этого). Токен доступа достигает конечной точки. Все идет нормально.

Но я также хочу использовать роли приложений. Я настроил их и получаю в токене идентификатора (просто для справки). Но мне нужны эти роли и на внутренней стороне.

Как я могу включить это (или любое другое утверждение в этом отношении из токена идентификации) в нижестоящий токен?

[Обновлять]

Я понял это. Проблема заключалась в том, что я запросил токен доступа к чему-то другому. Мне пришлось сделать следующее:

  • "открыл API" для этого приложения,
  • определить область действия этого API
  • назначить и утвердить эту область как грант
  • обновите область токена доступа по умолчанию в параметрах на вновь созданную.

И теперь роли включены в токен доступа, потому что токен предназначен для того же приложения. Действительно, роли, неизвестные другим API, включать бесполезно.

Вы создали роли приложения и назначили их пользователю в корпоративном приложении?

Rukmini 19.06.2024 07:24

Конечно. Токен id содержит их. Но токен нисходящего доступа этого не делает.

ZorgoZ 19.06.2024 07:48

Проверьте это, если это поможет stackoverflow.com/questions/77041535/…

Rukmini 19.06.2024 08:03

Вы создали 2 приложения? Вы также назначили пользователей для серверного приложения?

Rukmini 19.06.2024 08:12

Нет, это единая регистрация заявки. Но я разобрался: смотрите обновление. Благодарю вас за ваше усилие.

ZorgoZ 19.06.2024 10:18

Могу ли я опубликовать это как ответ?

Rukmini 19.06.2024 10:22

Если вы хотите.

ZorgoZ 19.06.2024 10:50
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
7
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы получить роли приложения в токене доступа, проверьте следующее:

Предоставьте API и добавьте область действия в приложении Microsoft Entra ID:

Созданная роль приложения:

Предоставьте разрешения API, как показано ниже:

В приложении Enterprise назначьте пользователю эту роль приложения:

Например, токены для API сгенерированы через Postman с использованием следующих параметров:

POST https://login.microsoftonline.com/TenantId/oauth2/v2.0/token
grant_type:authorization_code
client_id:ClientID
client_secret:ClientSecret
scope:api://xxx/.default
code:code
redirect_uri:https://jwt.ms

Когда я декодировал утверждение ролей, оно отображается в токене доступа:

Если проблема не устранена, проверьте ниже:

  • Убедитесь, что вы создаете токен для приложения, в котором создаются роли, поскольку роли неизвестны другому API, чтобы включить его в токен.
  • Предоставьте API, добавьте область и передайте область для создания токена.
  • Проверьте, назначена ли пользователю роль.

Другие вопросы по теме

Asp.net core 8 выбирает несколько с выбранным по умолчанию, не работает после обновления
Параллельные задачи. Запускайте параллельные потоки, но не ждите завершения других задач и получайте последние данные из базы данных
Ошибка «МАНИФЕСТ НЕИЗВЕСТНО» при публикации стандартного веб-приложения ASP.NET Core в приложениях-контейнерах Azure
.NET Core, недопустимое состояние ModelState в навигационных свойствах AllowNull в простой модели продуктов и категорий
Как установить тайм-аут для поиска операции с Mongo в С#
Я использую VS Code, как мне плавно перейти с ASP.NET Core из .NET 7 на .NET 8?
Как настроить решение C#, такое как внутренние зависимости и зависимости NuGet, на любом ПК без дополнительных ручных настроек, зависящих от ПК?
Настройки пересылки Yarp для динамической пересылки
Необходимо реализовать AddKeyedSingleton с помощью функции Azure
Скачать файл (угловой — dotnet)