Я работаю над SPA (Blazor wasm), который использует AzureAD/EntraID с «потоком кода авторизации».
Приложение размещается в службе веб-API ASP.NET Core 8, которая на данный момент предоставляет некоторые простые API. Я настроил приложение на запрос и прикрепление токена нисходящего доступа (на основе этого). Токен доступа достигает конечной точки. Все идет нормально.
Но я также хочу использовать роли приложений. Я настроил их и получаю в токене идентификатора (просто для справки). Но мне нужны эти роли и на внутренней стороне.
Как я могу включить это (или любое другое утверждение в этом отношении из токена идентификации) в нижестоящий токен?
[Обновлять]
Я понял это. Проблема заключалась в том, что я запросил токен доступа к чему-то другому. Мне пришлось сделать следующее:
И теперь роли включены в токен доступа, потому что токен предназначен для того же приложения. Действительно, роли, неизвестные другим API, включать бесполезно.
Конечно. Токен id содержит их. Но токен нисходящего доступа этого не делает.
Проверьте это, если это поможет stackoverflow.com/questions/77041535/…
Вы создали 2 приложения? Вы также назначили пользователей для серверного приложения?
Нет, это единая регистрация заявки. Но я разобрался: смотрите обновление. Благодарю вас за ваше усилие.
Могу ли я опубликовать это как ответ?
Если вы хотите.
Чтобы получить роли приложения в токене доступа, проверьте следующее:
Предоставьте 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
Когда я декодировал утверждение ролей, оно отображается в токене доступа:
Если проблема не устранена, проверьте ниже:
Вы создали роли приложения и назначили их пользователю в корпоративном приложении?