unifiedRoleDefinition : assignedPrincipals

Espace de noms: microsoft.graph

Importante

Les API sous la version /beta dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .

Obtenez la liste des principaux de sécurité (utilisateurs, groupes et principaux de service) qui sont affectés à un rôle spécifique pour différentes étendues directement ou transitivement. Vous pouvez également utiliser le $count paramètre de requête pour obtenir le nombre.

Cette API est prise en charge uniquement pour le fournisseur d’annuaires (Microsoft Entra ID).

Pour répertorier les attributions de rôles directes et transitives pour un principal spécifique, utilisez l’API List transitiveRoleAssignments .

Cette API est disponible dans les déploiements de cloud national suivants.

Service global Gouvernement des États-Unis L4 Us Government L5 (DOD) Chine gérée par 21Vianet

Autorisations

Choisissez l’autorisation ou les autorisations marquées comme moins privilégiées pour cette API. Utilisez une autorisation ou des autorisations privilégiées plus élevées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, consultez Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez les informations de référence sur les autorisations.

Type d’autorisation Autorisations avec privilèges minimum Autorisations privilégiées plus élevées
Déléguée (compte professionnel ou scolaire) RoleManagement.Read.Directory Directory.Read.All, RoleManagement.ReadWrite.Directory
Déléguée (compte Microsoft personnel) Non prise en charge. Non prise en charge.
Application RoleManagement.Read.Directory Directory.Read.All, RoleManagement.ReadWrite.Directory

Importante

Dans les scénarios délégués avec des comptes professionnels ou scolaires, l’utilisateur connecté doit se voir attribuer un rôle Microsoft Entra pris en charge ou un rôle personnalisé avec une autorisation de rôle prise en charge. Les rôles les moins privilégiés suivants sont pris en charge pour cette opération :

  • Lecteurs d’annuaire
  • Lecteur général
  • Administrateur de rôle privilégié

Importante

Lorsqu’une application interroge une relation qui retourne une collection de types directoryObject , si elle n’a pas l’autorisation de lire un certain type de ressource, les membres de ce type sont retournés, mais avec des informations limitées. Par exemple, seule la propriété @odata.type pour le type d’objet et l’ID est retournée, tandis que les autres propriétés sont indiquées comme null. Avec ce comportement, les applications peuvent demander les autorisations les moins privilégiées dont elles ont besoin, plutôt que de s’appuyer sur l’ensemble de Répertoire.*Autorisations. Pour plus d’informations, consultez Informations limitées retournées pour les objets membres inaccessibles.

Requête HTTP

GET /roleManagement/directory/roleDefinitions/{unifiedRoleDefinitionId}/assignedPrincipals(transitive=@transitive,directoryScopeType='@directoryScopeType',directoryScopeId='@directoryScopeId')

Paramètres de fonction

Dans l’URL de la demande, indiquez les paramètres de requête suivants avec leurs valeurs. Le tableau suivant indique les paramètres qui peuvent être utilisés avec cette fonction.

Paramètre Type Description
transitif Boolean Indique s’il faut inclure les principaux attribués via l’appartenance au groupe (directe ou transitive). false par défaut.
directoryScopeType String Étendue de répertoire pour laquelle obtenir des principaux attribués. Les valeurs prises en charge sont tenant, administrativeUnitet resource.
directoryScopeId String ID de l’étendue du répertoire pour lequel obtenir des principaux attribués. Par défaut, toutes les étendues sont prises en compte.

Vous pouvez également combiner tous les paramètres de fonction pris en charge dans une requête pour obtenir des résultats affinés.

Exemples de modèles de requête pour directoryScopeType

Portée Requête Pris en charge pour
Toutes les étendues /assignedPrincipals(transitive={true | false}) Tous les rôles
Étendue du locataire /assignedPrincipals(directoryScopeType='tenant', transitive={true | false}) Tous les rôles
Toutes les étendues d’unité administrative /assignedPrincipals(directoryScopeType='administrativeUnit', transitive={true | false}) Rôles d’annuaire
Étendue d’unité administrative spécifique /assignedPrincipals(directoryScopeType='administrativeUnit', directoryScopeId ='{roleDefinitionId | templateId}', transitive={true | false}) Rôles d’annuaire
Toutes les étendues de ressources /assignedPrincipals(directoryScopeType='resource', transitive={true | false}) Rôles d’annuaire
Étendue de ressource spécifique /assignedPrincipals(directoryScopeType='resource', directoryScopeId ='{roleDefinitionId | templateId}', transitive={true | false}) Rôles d’annuaire

Paramètres facultatifs de la requête

Cette méthode prend en charge les $countparamètres de requête , $select, $filteret $orderby OData pour vous aider à personnaliser la réponse. Vous pouvez également filtrer par type d’objet à l’aide du cast OData. Par exemple, /assignedPrincipals(transitive=false)/microsoft.graph.user et /assignedPrincipals(transitive=true)/microsoft.graph.servicePrincipal/$count. Pour des informations générales, consultez paramètres de la requête OData.

En-têtes de demande

Nom Description
Autorisation Porteur {token}. Obligatoire. En savoir plus sur l’authentification et l’autorisation.
ConsistencyLevel éventuellement. Obligatoire. Pour plus d’informations sur l’utilisation de ConsistencyLevel, consultez Fonctionnalités de requête avancées sur les objets d’annuaire.

Corps de la demande

N’indiquez pas le corps de la demande pour cette méthode.

Réponse

Si elle réussit, cette fonction renvoie un 200 OK code de réponse et une collection directoryObject dans le corps de la réponse.

Exemples

Pour les exemples de cette section, envisagez le scénario d’attribution de rôle suivant. Un utilisateur nommé User1 a des attributions de rôles directes et transitives comme suit :

Utilisateur Groupe Role Portée
Utilisateur1
6c62e70d-f5f5-4b9d-9eea-ed517ed9341f
Rôle1 Étendue1
Utilisateur1
6c62e70d-f5f5-4b9d-9eea-ed517ed9341f
Rôle1 Étendue2
Groupe1
86b38db7-6e8b-4ad2-b2aa-ced7f09486c1
(User1 est membre)
Rôle1 Étendue1
Groupe2
182351a6-d974-4d18-88ae-8a148da44cd2
(User1 est membre)
Rôle1 Étendue1
Groupe3
b93d5379-a464-4db5-b8e1-694910f1e11e
(User2 est membre)
(Utilisateur3 est membre)
Rôle1 Étendue3
  • Le rôle Role1 est attribué directement à l’utilisateur1 au niveau de l’étendue Étendue1.
  • Le rôle Role1 est attribué directement à l’utilisateur1 au niveau de l’étendue Étendue2.
  • User1 est membre du groupe Group1 et Group1 se voit attribuer le rôle Role1 au niveau de l’étendue Étendue1.
  • User1 est membre du groupe Group2 et Group2 se voit attribuer le rôle Role1 au niveau de l’étendue Étendue1.
  • User2 est membre du groupe Group3 et Group3 se voit attribuer le rôle Role1 dans l’étendue Étendue3.
  • User3 est membre du groupe Group3 et Group3 se voit attribuer le rôle Role1 au niveau de l’étendue Étendue3.

Exemple 1 : Obtenir le nombre de principaux affectés directs et transitifs pour toutes les étendues

Demande

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals(transitive=true)/$count

Réponse

La requête ci-dessus retourne un nombre de 6 représentant les attributions de rôles suivantes :

  • Deux attributions de rôles directes à l’utilisateur1 au niveau de l’étendue1 et de l’étendue2
  • Deux attributions de rôles transitives à User1 à Group1 et Group2
  • Deux attributions de rôles transitives à User 2 et User3 via Group3.
HTTP/1.1 200 OK
Content-type: text/plain

6

Selon le même scénario, les exemples suivants montrent les nombres retournés pour chaque modèle de requête :

Exemple Count
/assignedPrincipals(transitive=false)/$count 4
(Utilisateur1, Groupe1, Groupe2, Groupe3)
/assignedPrincipals(transitive=false)/microsoft.graph.user/$count 1
(Utilisateur1)
/assignedPrincipals(transitive=true)/microsoft.graph.user/$count 3
(Utilisateur1, Utilisateur2, Utilisateur3)
/assignedPrincipals(transitive=false)/microsoft.graph.group/$count 3
(Groupe1, Groupe2, Groupe3)
/assignedPrincipals(transitive=true)/microsoft.graph.group/$count 3
(Groupe1, Groupe2, Groupe3)

Exemple 2 : Obtenir des principaux directement attribués pour une étendue d’unité administrative et un rôle d’annuaire spécifiques

Demande

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals(directoryScopeType='administrativeUnit', directoryScopeId ='d0c2e067-9ae9-4dbf-a280-51a51c46f432')

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "value": [
    {
        "@odata.type": "#microsoft.graph.user",
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f"
    }
  ]
}

Exemple 3 : Obtenir des principaux directement attribués pour toutes les étendues

Demande

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "value": [
    {
        "@odata.type": "#microsoft.graph.user",
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f",
        "displayName": null,
        "userPrincipalName": null
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "86b38db7-6e8b-4ad2-b2aa-ced7f09486c1",
        "displayName": "Group1"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "182351a6-d974-4d18-88ae-8a148da44cd2",
        "displayName": "Group2"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "b93d5379-a464-4db5-b8e1-694910f1e11e",
        "displayName": "Group3"
    }
  ]
}

Exemple 4 : Obtenir des utilisateurs directement affectés uniquement pour une étendue à l’échelle du locataire

Demande

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals(directoryScopeType='tenant')/microsoft.graph.user

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#users",
  "value": [
    {
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f",
        "displayName": null,
        "userPrincipalName": null
    }
  ]
}

Exemple 5 : Obtenir des principaux et un nombre inline attribués directement

L’exemple suivant obtient les principaux directement attribués et affiche un nombre inline.

Demande

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals?$count=true

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "@odata.count": 4,
  "value": [
    {
        "@odata.type": "#microsoft.graph.user",
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f",
        "displayName": null,
        "userPrincipalName": null
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "86b38db7-6e8b-4ad2-b2aa-ced7f09486c1",
        "displayName": "Group1"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "182351a6-d974-4d18-88ae-8a148da44cd2",
        "displayName": "Group2"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "b93d5379-a464-4db5-b8e1-694910f1e11e",
        "displayName": "Group3"
    }
  ]
}