Как запросить разрешения OAuth2 для субъектов службы в Entra ID с помощью Microsoft Graph Powershell?

Когда я запрашиваю субъектов службы типа приложения как с делегированными разрешениями, так и с разрешениями приложения для MS Graph, разрешения OAuth2 (Oauth2PermissionGrants) всегда возвращаются как $null.

$servicePrincipal = Get-MgServicePrincipal -ServicePrincipalId c3c1919a-eb0e-4664-96c7-3a4112345678

Как я могу вернуть разрешения OAuth2 для субъектов-служб?

Примечание. Модуль AzureAD не работает на Mac на базе Arm64.

Попробуйте с Invoke-MgGraphRequest GET v1.0/servicePrincipals/c3c1919a-eb0e-4664-96c7-3a4112345678/‌​oauth2PermissionGran‌​ts

Santiago Squarzon 24.08.2024 19:48

@SantiagoSquarzon Спасибо! Это работает, однако в результате не указан ресурс, определяющий область действия. Для областей MS Graph PrincipalId имеет значение NULL, а идентификатор ресурса — это само разрешение. Знаете ли вы, почему это работает, а Get-MgServicePrincipal — нет? Как получить ресурс в результате?

Shuzheng 24.08.2024 20:09

@SantiagoSquarzon Кроме того, не могли бы вы это прокомментировать? serverfault.com/questions/1164279/…

Shuzheng 24.08.2024 20:11

Извините, я не использую командлеты из этого модуля, за исключением Invoke-MgGraphRequest для прямых запросов к API. Остальные командлеты — чистый мусор. Понятия не имею, почему Get-MgServicePrincipal не возвращает это, меня это тоже не удивляет.

Santiago Squarzon 24.08.2024 20:18

Invoke-MgGraphRequest выполняет HTTP-запрос, а Get-MgServicePrincipal входит в систему на удаленном компьютере для получения данных. Invoke-MgGraphRequest будет использовать пользователя/роль для получения доступа к данным. Invoke-MgGraphRequest может потребовать от администратора получить доступ к учетной записи другого пользователя.

jdweng 24.08.2024 21:51

@jdweng Что вы подразумеваете под «входом на удаленный компьютер»? Я нацелен на Entra ID

Shuzheng 25.08.2024 10:25

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

jdweng 25.08.2024 14:12

@jdweng Но я не нацелен на удаленный компьютер в случае Entra ID? Разве ваш комментарий не относится только к Active Directory?

Shuzheng 25.08.2024 17:49

Вы работаете от имени администратора? Обязательно запустите командлет PS, щелкнув правой кнопкой мыши ярлык PS и выбрав «Запуск от имени администратора».

jdweng 25.08.2024 19:25

Шучжэн: просто игнорируйте все, что говорит пользователь выше. 99/100 комментариев - это чистая чушь. Можете ли вы уточнить, что вы подразумеваете под «в результате не указан ресурс, определяющий область действия»? Я думал, что ресурс, определяющий область действия, — это то, что вы увидите в свойстве resourceId из ответа API: Learn.microsoft.com/en-us/graph/api/…

Santiago Squarzon 25.08.2024 21:59

Извините, вы правы. resourceId действительно является идентификатором ресурса, определяющего область действия. Это идентификатор объекта субъекта-службы.

Shuzheng 26.08.2024 19:46

@SantiagoSquarzon Была ли у вас возможность прокомментировать мой вопрос относительно неизменяемых тегов объектов Entra ID, таких как приложения, группы и т. д. Я не хочу, чтобы владельцы могли изменять или удалять теги

Shuzheng 26.08.2024 19:49
Как установить 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
12
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Для примера я предоставил приложению Microsoft Entra ID несколько делегированных разрешений и разрешений API приложения:

Чтобы получить делегированные разрешения API, используйте следующую команду:

Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId ServicePrincipalId

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

 Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId ServicePrincipalId

Спасибо @Rukmini. Как бы вы запросили значение роли приложения для идентификатора роли приложения, например Application.Read.All?

Shuzheng 26.08.2024 19:47

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

Rukmini 26.08.2024 20:16

Вставьте сюда ссылку на новый вопрос со всеми подробностями.

Rukmini 27.08.2024 09:23

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