Étendues d’autorisation | Concepts de l’API Graph
S’applique à : API Graph | Azure Active Directory (AD)
L’API Graph expose les étendues d’autorisation OAuth 2.0 qui sont utilisées pour contrôler l’accès d’une application aux données d’annuaire du client. En tant que développeur, vous configurez votre application avec les étendues d’autorisation appropriées pour l’accès dont elle a besoin. Vous effectuez généralement cela dans le portail Azure. Pendant la connexion, les utilisateurs ou administrateurs ont la possibilité de consentir à autoriser votre application à accéder à leurs données d’annuaire avec les étendues d’autorisation que vous avez configurées. Pour cette raison, vous devez choisir les étendues d’autorisation qui fournissent le niveau de privilège le plus bas nécessaire à votre application. Pour plus d’informations sur la façon de configurer des autorisations pour votre application et sur le processus de consentement, consultez Intégration d’applications à Azure Active Directory.
Important
Nous vous recommandons fortement d’utiliser Microsoft Graph plutôt que l’API Graph Azure AD pour accéder aux ressources Azure Active Directory. Nos efforts de développement sont désormais axés sur Microsoft Graph et aucune autre amélioration n’est prévue pour l’API Graph Azure AD. Il existe un nombre très limité de scénarios pour lesquels l’API Graph Azure AD peut être encore appropriée ; pour plus d’informations, consultez le billet de blog Microsoft Graph ou l’API Azure AD dans le Centre de développement Office.
Concepts de l’étendue d’autorisation
Étendue App-only et étendue déléguée
Les étendues d’autorisation peuvent être de type app-only ou délégué. Les étendues app-only (également appelées rôles d’application) octroient à l’application l’ensemble des privilèges offerts par l’étendue. Les étendues app-only sont généralement utilisées par des applications qui s’exécutent en tant que service sans utilisateur connecté. Les étendues d’autorisation déléguée s’appliquent aux applications avec un utilisateur connecté. Ces étendues délèguent les privilèges de l’utilisateur connecté à l’application, ce qui permet à celle-ci d’agir en tant qu’utilisateur connecté. Les privilèges réels accordés à l’application correspondront à la combinaison la plus basse (intersection) des privilèges accordée par l’étendue et les privilèges octroyés à l’utilisateur connecté. Par exemple, si l’étendue d’autorisation accorde des privilèges délégués pour écrire tous les objets d’annuaire, mais que l’utilisateur connecté dispose de privilèges uniquement pour mettre à jour son propre profil utilisateur, l’application peut uniquement écrire le profil de l’utilisateur connecté, mais aucun autre objet.
Profil complet et profil de base pour les utilisateurs et les groupes
Le profil complet (ou profil) d’un Utilisateur ou d’un Groupe comprend toutes les propriétés déclarées de l’entité. Comme le profil peut contenir des informations d’annuaire sensibles ou des informations d’identification personnelle (PII), plusieurs étendues limitent l’accès de l’application à un ensemble limité de propriétés connues sous le nom de profil de base. Pour les utilisateurs, le profil de base comprend uniquement les propriétés suivantes : nom complet, prénom et nom, photo et adresse de messagerie. Pour les groupes, le profil de base inclut uniquement le nom complet.
Détails de l’étendue d’autorisation
Le tableau suivant répertorie les étendues d’autorisation de l’API Graph et décrit en détail l’accès accordé par chacune d’elles.
- La colonne Étendue indique le nom de l’étendue. Les noms d’étendue prennent la forme ressource.opération.contrainte ; par exemple, Group.ReadWrite.All. Si la contrainte est « All », l’étendue permet à l’application d’effectuer l’opération (ReadWrite) sur toutes les ressources (Group) dans l’annuaire ; dans le cas contraire, l’étendue autorise l’opération uniquement sur le profil de l’utilisateur connecté. Les étendues peuvent accorder des privilèges limités pour l’opération spécifiée. Consultez la colonne Description pour plus d’informations.
- La colonne Autorisation indique la façon dont l’étendue s’affiche sur le portail Azure.
- La colonne Description décrit l’ensemble des privilèges accordés par l’étendue. Pour les étendues déléguées, l’accès réel accordé à l’application est la combinaison la moins privilégiée (intersection) de l’accès accordé par l’étendue et les privilèges de l’utilisateur connecté.
Étendue | Autorisation | Description | Type d’étendue | Nécessite le consentement de l’administrateur |
---|---|---|---|---|
User.Read | Activer la connexion et lire le profil utilisateur | Permet aux utilisateurs de se connecter à l’application et permet à l’application de lire le profil complet de l’utilisateur connecté. Le profil complet comprend toutes les propriétés déclarées de l’entité User. User.Read permet également à l’application de lire les informations d’entreprise de base suivantes pour l’utilisateur connecté (via l’objet TenantDetail) : ID du locataire, nom d’affichage du locataire et domaines vérifiés. L’application ne peut pas lire les propriétés de navigation, telles que le gestionnaire ou les collaborateurs directs. L’application ne peut pas lire le mot de passe de l’utilisateur. | delegated | Non |
User.ReadBasic.All | Lire les profils de base de tous les utilisateurs | Permet à l’application de lire le profil de base de tous les utilisateurs de l’organisation au nom de l’utilisateur connecté. Les propriétés suivantes constituent le profil de base d’un utilisateur : nom complet, prénom et nom, photo et adresse de messagerie. Pour lire les groupes dont un utilisateur est membre, l’application nécessite également Group.Read.All ou Group.ReadWrite.All. | delegated | Non |
User.Read.All | Lire les profils complets de tous les utilisateurs | Identique à User.ReadBasic.All, à ceci près que l’application peut lire le profil complet de tous les utilisateurs de l’organisation et lors de la lecture des propriétés de navigation comme le responsable et les collaborateurs directs. Le profil complet comprend toutes les propriétés déclarées de l’entité User. Pour lire les groupes dont un utilisateur est membre, l’application nécessite Group.Read.All ou Group.ReadWrite.All. L’application ne peut pas lire les mots de passe des utilisateurs. | delegated | Oui |
Group.Read.All | Lire tous les groupes (préversion) | Permet à l’application de lire le profil de base de tous les groupes de l’organisation au nom de l’utilisateur connecté. L’application peut également lire le profil de base des groupes dont un groupe est membre. Le profil de base d’un groupe inclut uniquement le nom complet du groupe. Pour lire les informations de profil des membres d’un groupe, l’application nécessite également User.ReadBasic ou User.Read.All. | delegated | Oui |
Group.ReadWrite.All | Accéder en lecture et en écriture à tous les groupes (préversion) | Permet à l’application de lire le profil complet de tous les groupes de l’organisation et de créer et de mettre à jour des groupes au nom de l’utilisateur connecté. L’application peut également lire le profil complet des groupes dont un groupe est membre. Le profil complet comprend toutes les propriétés déclarées de l’entité Group. Pour lire ou mettre à jour les profils des membres d’un groupe, l’application nécessite également User.ReadBasic ou User.Read.All. | delegated | Oui |
Device.ReadWrite.All | Lire et écrire tous les périphériques | Permet à l’application de lire et d’écrire toutes les propriétés du périphérique sans utilisateur connecté. N’autorise pas la création d’un périphérique, la suppression d’un périphérique ou la mise à jour des autres identificateurs de sécurité d’un périphérique. | app-only | Oui |
Directory.Read.All | Lire des données d'annuaire | Autorise l’application à lire toutes les données dans l’annuaire de l’organisation, telles que les utilisateurs, les groupes et les applications et leurs propriétés de navigation associées. Remarque : les utilisateurs peuvent accepter les applications qui nécessitent cette autorisation si l’application est inscrite dans le locataire de leur propre entreprise. | app-only, delegated | Oui |
Directory.ReadWrite.All | Lire et écrire des données d'annuaire | Autorise l’application à lire toutes les données dans l’annuaire de l’organisation. Autorise l’application à créer et mettre à jour les utilisateurs et groupes et leurs propriétés de navigation, mais interdit la suppression de groupe ou d’utilisateur. Permet également à l’application de définir des extensions de schéma sur les applications. Pour obtenir une liste détaillée des privilèges, consultez Privilèges détaillés de Directory.ReadWrite.All ci-dessous. | app-only, delegated | Oui |
Directory.AccessAsUser.All | Accéder à l’annuaire en tant qu’utilisateur connecté | Octroie à l’application le même accès aux données dans l’annuaire de l’organisation que l’utilisateur connecté. Remarque: une application cliente native peut inviter l’utilisateur à donner son consentement à cette autorisation. Toutefois, une application web requiert le consentement de l’administrateur. | delegated | Oui |
Remarque: par défaut, lorsque vous créez une application en utilisant le portail Azure, Azure AD lui assigne une étendue d’autorisation déléguée User.Read.
Privilèges détaillés de Directory.ReadWrite.All
L’étendue d’autorisation Directory.ReadWrite.All accorde les privilèges suivants :
- Lire sans restriction tous les objets d’annuaire (y compris les propriétés déclarées et les propriétés de navigation)
- Créer et mettre à jour des utilisateurs
- Désactiver et activer les utilisateurs (à l’exception de l’administrateur d’entreprise)
- Définir les ID de sécurité alternatifs des utilisateurs (à l’exception de ceux des administrateurs)
- Créer et mettre à jour des groupes
- Gérer les appartenances de groupe
- Mettre à jour le propriétaire de groupe
- Gérer les affectations de licence
- Définir des extensions de schéma sur les applications
- Permet de définir un mot de passe lors de la création d’un utilisateur.
- Remarque : aucun droit de réinitialisation des mots de passe des utilisateurs
- Remarque : aucun droit de lecture des mots de passe des utilisateurs
- Remarque: aucun droit de suppression des entités (y compris les utilisateurs ou les groupes)
- Remarque: exclut les créations ou les mises à jour d’entités non répertoriées ci-dessus. Cela comprend : Application, Oauth2PermissionGrant, AppRoleAssignment, Device, ServicePrincipal, TenantDetail, domains, etc.
Scénarios d’étendue d’autorisation
Le tableau suivant présente les étendues d’autorisation nécessaires pour une application afin qu’elle puisse effectuer des opérations spécifiques. Notez que, dans certains cas, la capacité de l’application à effectuer certaines opérations dépend du type de l’étendue d’autorisation (application uniquement ou déléguée) et, dans le cas d’étendues d’autorisation déléguée, dépend des privilèges de l’utilisateur connecté.
Scénario | Accès obligatoire | Étendue d’autorisation requise |
---|---|---|
Se connecter et afficher une mosaïque avec le nom et la photo miniature de l’utilisateur. | Lire le profil complet de l’utilisateur connecté. Lire les informations de base sur la société. |
User.Read |
Sélecteur simple de personnes. | Lire le profil de base de tous les utilisateurs de la part de l’utilisateur connecté. | User.ReadBasic.All |
Sélecteur de personnes avec profil complet. | Similaire au précédent mais avec l’accès au profil complet des utilisateurs de la part de l’utilisateur connecté. | User.Read.All |
Navigateur d’organigramme. | Lire le profil complet de tous les utilisateurs, de leurs gestionnaires et des collaborateurs directs de la part de l’utilisateur connecté. | User.Read.All |
Sélecteur de personnes comprenant les groupes pour contrôler l’accès à votre application. Visionneuse de groupe et d’appartenance. |
Lire le profil de base de tous les groupes et utilisateurs de la part de l’utilisateur connecté. Lire les profils d’utilisateur de base pour le responsable et les collaborateurs directs des utilisateurs. Lire le profil de base d’appartenance de groupe d’utilisateurs. Lire le profil de base d’appartenance de groupe de groupes. Lire le profil de base de membres de groupes. |
User.ReadBasic.All et Group.Read.All |
Afficher le profil de l’utilisateur connecté et le responsable de l’utilisateur, les collaborateurs directs et les appartenances de groupes. | Utilisez les opérations me pour lire : Profil complet de l’utilisateur connecté. Profil complet du responsable de l’utilisateur connecté et des collaborateurs directs. Profil de base des groupes dont l’utilisateur connecté est membre. Remarque : la combinaison des deux étendues accorde un accès plus privilégié que spécifié ici pour les opérations me . |
User.Read.All et Group.Read.All |
Service de gestion de groupes permettant aux utilisateurs de créer et de gérer des groupes. | Lire le profil complet de tous les groupes et utilisateurs de la part de l’utilisateur connecté. Lire les profils d’utilisateur complets pour le responsable et les collaborateurs directs des utilisateurs. Lire le profil complet d’appartenance de groupe d’utilisateurs. Lire le profil complet d’appartenance de groupe pour les groupes. Lire le profil complet des membres des groupes. Créer et mettre à jour les groupes et leurs propriétés de navigation (membres). |
User.Read.All et Group.ReadWrite.All |
Lire tous les objets d’annuaire (y compris les propriétés de navigation). | Directory.Read.All | |
Lire tous les objets d’annuaire (y compris les propriétés de navigation). Créer et mettre à jour les objets utilisateur et groupe. Aucune suppression d’utilisateur ou de groupe. Remarque : certaines autorisations octroyées ne sont pas répertoriées ici. |
Directory.ReadWrite.All | |
Agir en tant qu’utilisateur connecté. | Lire et écrire des objets d’annuaire (y compris les propriétés de navigation) pour le compte de l’utilisateur connecté. | Directory.AccessAsUser.All |
Accès par défaut pour les administrateurs, utilisateurs et utilisateurs invités
Le tableau suivant répertorie l’accès par défaut des administrateurs (globaux), les utilisateurs et les utilisateurs invités dans l’annuaire. L’accès par défaut peut être étendu ou restreint ultérieurement en fonction de la configuration de l’annuaire et/ou de l’appartenance d’un utilisateur à un ou plusieurs rôles d’annuaire. Pour plus d’informations sur la configuration de l’accès des utilisateurs et des utilisateurs invités aux données d’annuaire, consultez Création ou modification d’utilisateurs dans Azure AD. Pour plus d’informations sur l’accès associé aux différents rôles d’annuaire, consultez Attribution de rôles d’administrateur dans Azure AD.
Type d’utilisateur | Accès |
---|---|
Administrateur général | Lire tous les objets d’annuaire. Créer, mettre à jour et supprimer tous les objets d’annuaire. |
Utilisateur | Lire tous les objets d’annuaire. Créer des applications et des principaux de service associés. Mettre à jour leur profil. Mettre à jour les groupes dont ils sont propriétaires (et la propriété des membres). Mettre à jour les applications et des principaux de service qu’ils possèdent. Supprimer les applications et les principaux de service qu’ils possèdent. |
Utilisateur invité | Lire leur profil complet. Lire les profils de base de tous les autres utilisateurs. Lire les profils de base de tous les groupes. Lire les applications. Mettre à jour certaines propriétés de leur profil. Aucune recherche d’utilisateurs ou de groupes (voir Limitations de recherche d’utilisateurs et de groupe pour les utilisateurs invités ci-dessous). |
Limitations de recherche d’utilisateurs et de groupe pour les utilisateurs invités
Les fonctionnalités de recherche d’utilisateurs et de groupes permettent à l’application de rechercher n’importe quel utilisateur ou groupe répertorié dans l’annuaire des clients en effectuant des requêtes sur le jeu de ressources users ou groups (par exemple, https://graph.windows.net/myorganization/users?api-version=1.6
). Les administrateurs et les utilisateurs ont cette possibilité. Les utilisateurs invités ne la possèdent pas. Si l’utilisateur connecté est un utilisateur invité, en fonction de l’étendue d’autorisation, une application peut lire le profil d’un utilisateur ou d’un groupe spécifique à l’aide de l’ID d’objet ou le nom d’utilisateur principal (UPN) pour un utilisateur ou à l’aide de l’ID d’objet pour un groupe (par exemple, https://graph.windows.net/myorganization/users/241f22af-f634-44c0-9a15-c8cd2cea5531?api-version=1.6
) ; toutefois, il ne peut pas exécuter des requêtes sur l’ensemble de ressources users ou groups qui nécessitent potentiellement plusieurs entités. Par exemple, en fonction de l’étendue d’autorisation, l’application peut lire les profils des utilisateurs ou des groupes qu’elle obtient en suivant les liens dans les propriétés de navigation, mais elle ne peut pas émettre de requête pour retourner tous les utilisateurs ou les groupes dans l’annuaire.