Роли, назначенные управляемому удостоверению в Azure, отсутствуют в токене

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

Например, я в группе, и этой группе назначена роль Developer:

Когда я генерирую токен для API, который защищает этот принципал, в результирующем JWT я получаю следующее:

"roles": [
  "Developer"
]

Токен генерируется с использованием OAuth 2.0, где SPA — это клиент, указанный в утверждении azp результирующего токена.

Теперь хочу сделать то же самое, но от APIM и для принципала. У APIM есть управляемое удостоверение, назначаемое пользователем, которому я назначил роль «Только приложение» тому же субъекту, что и в первом изображении. Назначение выполняется на субъекте, поддерживающем управляемое удостоверение:

Для проверки я добавил в APIM операцию со следующей политикой:

<inbound>
    <authentication-managed-identity resource = "api://{{the-api-I-want-toca--}}" client-id = "{{apim-clientId}}" output-token-variable-name = "access-token" ignore-error = "false" />
    <return-response>
        <set-status code = "200" reason = "OK" />
        <set-body>@("Bearer " + (string)context.Variables["access-token"])</set-body>
    </return-response>
</inbound>

Я могу вызвать эту операцию и получить обратно токен, но в токене вообще нет заявления о роли или каких-либо других метаданных.

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

Я здесь что-то неправильно понимаю? Почему для участников это не так же, как для пользователей? Как мне добиться такого же поведения в моем новом варианте использования с руководителями?

Как установить 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
0
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы пробовали еще раз через 24 часа? Одна из возможностей заключается в том, что вы приобрели токен для этого API с помощью управляемого удостоверения до того, как была назначена роль. Управляемая конечная точка удостоверения кэширует токены в течение 24 часов (см. документацию), поэтому любые изменения разрешений, основанные на значениях в токене, не будут отражены до истечения срока действия этого кеша.

Обратите внимание, что это не применимо к ролям Azure RBAC, и, например, сам токен в этом случае не изменится.

Вау, спасибо! Вы были правы в том, что я запросил токен, а затем назначил роль. Вернувшись с выходных, я вижу ожидаемую роль в своих претензиях. Я не знал, что токены управляемой идентификации кэшируются в течение 24 часов, было очень полезно знать об этом в будущем.

jokarl 06.05.2024 08:23

есть ли способ очистить этот кеш..?

Varesh 12.07.2024 16:32

Насколько мне известно, нет, кроме воссоздания Управляемой идентичности.

juunas 12.07.2024 21:36

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

Обнаружение ошибки 403 при попытке доступа к URL-адресам Microsoft Forms, несмотря на успешное получение токена аутентификации
Azure AD AP, можем ли мы создать собственный идентификатор пользователя для доступа. Разрешить доступ к внутреннему API, связанному с приложением Azure AD?
Межоблачная аутентификация Azure с использованием AAD
Есть ли способ получить новый токен Azure CLI без выхода из системы?
Ошибка при входе в Azure AD B2C. URI перенаправления «localhost:3001», указанный в запросе, не зарегистрирован
Верните удаленные приложения, начиная с аутентификации по клиентскому сертификату «dev»
Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: «Указанный сетевой пароль неверен»
У портала возникли проблемы с получением токена аутентификации. Предоставляемый опыт может быть ухудшен
Какой поток аутентификации при регистрации приложения Azure AD следует использовать?
Время от времени сбой запроса хранилища таблиц Azure из-за ошибки проверки подлинности (получено: запрещено)

Похожие вопросы

Могу ли я иметь секреты, срок действия которых не истекает в системе единого входа Microsoft через Azure Microsoft Entra ID?
Az Powershell – невозможно прочитать содержимое файла CSV
Бета-версия C# Graph позволяет получить все типы назначений с их правилами обнаружения для всех Win32LobApps за один вызов
Служба связи Azure — ошибка «Приложение пытается получить доступ к службе 1fd5118e-2576-4263-8130-9503064c837a». Тогда известное решение не работает
Распространение самостоятельного расширения Chrome через организацию, управляемую Azure
Можно ли использовать PhraseListGrammar с IntentRecouncer в Microsoft Speech SDK для Java?
Публикация артефакта в Azure Devops Pipeline: ошибка получения разрешения на доступ к пути
Сбой контейнера Grobid при использовании приложений-контейнеров Azure
Функции Azure добавляют пользовательскую переменную среды во время публикации
Добавьте виртуальные приложения и каталоги в мое веб-приложение Azure