После получения назначений ролей приложения субъекту-службе:
Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId ServicePrincipalId
Я хочу получить значение для каждой роли приложения. Ответ включает идентификатор роли приложения и идентификатор ресурса для каждой назначенной роли приложения.
Я могу получить роли приложения для приложения следующим образом, но тогда мне сначала нужно будет сопоставить идентификатор объекта субъекта-службы (идентификатор ресурса) с идентификатором объекта связанного приложения:
(Get-MgApplication -ApplicationId ApplicationId).AppRoles
Есть ли более простой способ?
Чтобы получить значение роли приложения с учетом идентификатора роли приложения в Entra ID с помощью Microsoft Graph PowerShell, используйте приведенный ниже скрипт:
Я предоставил приложению Microsoft Entra ID несколько разрешений API приложения:
$ServicePrincipalId = "ServicePrincipalObjectID"
$AppRoleAssignments = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ServicePrincipalId
$AssignedRoles = @()
foreach ($Assignment in $AppRoleAssignments) {
$ResourceId = $Assignment.ResourceId
$AppRoleId = $Assignment.AppRoleId
$ServicePrincipal = Get-MgServicePrincipal -ServicePrincipalId $ResourceId
$AppRole = $ServicePrincipal.AppRoles | Where-Object { $_.Id -eq $AppRoleId }
if ($AppRole) {
$AssignedRoles += [PSCustomObject]@{
'App Role ID' = $AppRole.Id
'App Role Display Name' = $AppRole.DisplayName
'App Role Value' = $AppRole.Value
}
}
}
$AssignedRoles | Format-Table -AutoSize
Когда вы предоставляете согласие администратора на роли приложения, это также будет отражено в разрешениях субъекта-службы.
@Shuzheng Сработал ли у вас приведенный выше сценарий?
Да, добавленные роли приложения будут отражены в колонке разрешений субъекта-службы. Но роли приложения не определены в субъекте-службе, они определены в приложении в колонке ролей приложения.
Да, я согласен, и вы не можете определять роли в субъекте-службе. Субъект-служба находится в экземпляре приложения, и, следовательно, разрешения также будут отражены в колонке разрешений субъекта-службы.
Субъекты-службы не определяют свои собственные роли, а вместо этого отражают роли, определенные приложением, с которым они связаны. Роли приложения определяются в приложении, а затем эти роли становятся доступными через субъект-службу в клиенте, где используется приложение.
Спасибо. Это неправда: эти роли отражены в разрешениях субъекта-службы. Приложение может определить 100 ролей приложения, но в разрешениях субъекта-службы отображаются только роли приложения, назначенные ему.
Хаха, да. Я хочу перечислить все определения расширений каталогов в клиенте, используя Get-MgDirectoryObjectAvailableExtension
. Однако он возвращает лишь некоторые из них (не те, которые созданы в приложениях моего клиента). Чтение этих атрибутов расширения каталога непосредственно из приложения с помощью Get-MgApplicationExtensionProperty -ApplicationId ApplicationId
дает атрибуты расширения, которые не возвращаются Get-MgDirectoryObjectAvailableExtension
. У вас есть идеи?
Пожалуйста, задайте новый вопрос с подробностями, я помогу вам там и вставьте ссылку сюда.
Я опубликовал новый вопрос. Спасибо за помощь @Rukmini
Конечно проверю и обновлю
Спасибо! Почему роли приложения находятся как в приложении, так и в связанном с ним субъекте-службе? На портале роли приложения настраиваются для приложения, а не для субъекта-службы (здесь вы назначаете пользователей/группы ролям приложения).