Accès délégué et EWS dans Exchange
Découvrez comment utiliser l’API managée EWS et EWS dans Exchange pour fournir un accès délégué aux boîtes aux lettres des utilisateurs.
Vous pouvez permettre à des utilisateurs d'accéder aux boîtes aux lettres d'autres utilisateurs de trois façons :
En ajoutant des délégués et en spécifiant des autorisations pour chacun d’entre eux.
En modifiant directement les autorisations du dossier.
En utilisant l’emprunt d’identité.
La délégation et les autorisations de dossier conviennent mieux si vous souhaitez accorder l'accès uniquement à certains utilisateurs, car vous devez ajouter les autorisations individuellement pour chaque boîte aux lettres. L’emprunt d’identité est le meilleur choix lorsque vous traitez de quantités de boîtes aux lettres, car vous pouvez facilement activer un compte de service pour accéder à chaque boîte aux lettres d’une base de données. La Figure 1 présente quelques-unes des différences entre chaque type d'accès.
Figure 1. Méthodes d’accès aux boîtes aux lettres des autres utilisateurs
Lorsqu’il s’agit d’envoyer du courrier électronique ou de planifier des réunions, les délégués peuvent recevoir des autorisations « envoyer de la part de », de sorte que le destinataire d’un e-mail ou d’une demande de réunion qui a été envoyé par un délégué voit « délégué au nom du propriétaire de la boîte aux lettres » lorsqu’ils reçoivent l’e-mail ou la demande de réunion dans Outlook. L’inclusion du texte « envoyer au nom de » est un détail d’implémentation client et peut être créé à l’aide des valeurs « from » et « sender ». La valeur « from » indique le propriétaire de la boîte aux lettres et la valeur « sender » indique le délégué qui a envoyé le message. Si un compte de service empruntant l’identité d’un utilisateur envoie un e-mail ou planifie une réunion pour le propriétaire de la boîte aux lettres, le message est « envoyé en tant que » propriétaire de la boîte aux lettres. Il n'existe aucun moyen pour le destinataire de savoir que le message a été envoyé par le compte de service. Les utilisateurs disposant d’autorisations de dossier et non d’un accès délégué ne peuvent pas « envoyer en tant que » ou « envoyer au nom de » d’un propriétaire de boîte aux lettres. Ils ont accès aux dossiers de boîte aux lettres et peuvent créer des éléments dans les dossiers, mais ils ne peuvent pas envoyer les éléments.
Quand est-il approprié de modifier directement les autorisations de dossier ? En règle générale, lorsque vous souhaitez fournir à un utilisateur l’accès à un dossier, mais que vous ne souhaitez pas accorder à l’utilisateur des autorisations d'« envoi de la part de », lorsque vos exigences d’autorisations ne correspondent pas aux valeurs d’énumération de l’API managée DelegateFolderPermissionLevel EWS ou aux valeurs d’élément EWS PermissionLevel , ou lorsque vous souhaitez fournir à un utilisateur l’accès à un dossier personnalisé unique.
Si vous avez seulement besoin de modifier les autorisations de dossier pour atteindre votre objectif et que vous n’avez pas besoin d’ajouter un délégué (autrement dit, vous n’avez pas besoin d’autorisations « Envoyer de la part de »), consultez Définir les autorisations de dossier pour un autre utilisateur à l’aide d’EWS dans Exchange.
Notez que vous pouvez également utiliser Outlook ou Exchange Server PowerShell (Exchange Management Shell) pour configurer l’accès délégué.
Comment fonctionne l’accès délégué ?
L’accès délégué permet aux utilisateurs d’accéder à tout ou partie des dossiers du propriétaire de la boîte aux lettres et d’agir au nom du propriétaire de la boîte aux lettres. Le propriétaire de la boîte aux lettres peut être un utilisateur ou une ressource, comme une salle de conférence. Par exemple, un réceptionneur peut se voir accorder des autorisations de délégué au dossier de calendrier d’une salle de conférence pour gérer les demandes de réservation. Vous pouvez utiliser l’API managée EWS ou EWS pour permettre au propriétaire de la boîte aux lettres ou à un administrateur d’ajouter un délégué, spécifier les dossiers auxquels le délégué peut accéder, puis spécifier les autorisations pour ce dossier. Les délégués peuvent avoir accès aux dossiers suivants :
Calendrier
Tâches
Boîte de réception
Contacts
Remarques
Journal
Lorsqu’un utilisateur dispose d’un accès délégué à un ou plusieurs de ces dossiers, il peut créer, obtenir, mettre à jour, supprimer, copier et rechercher des éléments dans ce dossier et tous les dossiers enfants, en fonction des autorisations définies sur le dossier. La façon dont l’application effectue ces actions varie selon que l’accès explicite ou implicite est requis.
Déléguer des autorisations
Lorsqu’un administrateur ou un propriétaire de boîte aux lettres ajoute un délégué à une boîte aux lettres, il peut également définir le niveau d’autorisation pour un ou plusieurs dossiers. Si aucun niveau d’autorisation n’est défini pour un dossier, la valeur d’autorisation par défaut est None. Plusieurs utilisateurs peuvent avoir le même niveau d’autorisation sur un dossier, et les utilisateurs peuvent avoir des niveaux d’autorisation différents pour différents dossiers. Si vous utilisez l’API managée EWS, vous utilisez la propriété DelegateUser.Permissions , qui contient l’une des valeurs d’énumération DelegateFolderPermissionLevel pour chaque dossier, pour définir des autorisations déléguées sur les dossiers. Si vous utilisez EWS, vous utilisez l’élément DelegatePermissions pour définir des autorisations de délégué et l’élément PermissionLevel pour définir le niveau d’autorisation.
Tableau 2. Déléguer des niveaux d’autorisation
Niveau d’autorisation | Description |
---|---|
Aucun |
Il s’agit de la valeur par défaut pour tous les dossiers. |
Auteur |
Un délégué peut lire et créer des éléments, et modifier et supprimer des éléments qu’il crée. Par exemple, un délégué peut créer des demandes de tâches et des demandes de réunion directement dans le dossier Tâche ou Calendrier du propriétaire de la boîte aux lettres, puis envoyer l’un des éléments au nom du propriétaire de la boîte aux lettres. |
Éditeur |
Un délégué peut faire tout ce qu’un auteur peut faire, ainsi que modifier et supprimer les éléments créés par le propriétaire de la boîte aux lettres. |
Relecteur |
Un délégué peut lire des éléments ; par exemple, un délégué disposant de l’autorisation Réviseur peut lire les messages dans la boîte de réception d’une autre personne. |
Personnalisé |
Le propriétaire de la boîte aux lettres a accordé un jeu d’autorisations personnalisé au délégué. |
La propriété d’API managée EWS DelgateUser.ViewPrivateItems et l’élément EWS ViewPrivateItems sont un paramètre global qui affecte tous les dossiers du propriétaire de la boîte aux lettres, y compris tous les dossiers Courrier, Contacts, Calendrier, Tâches, Notes et Journal. Vous ne pouvez pas autoriser l’accès aux éléments privés dans un seul dossier.
Accès explicite
En d’autres termes, l’accès explicite est le moyen d’entrée permettant aux délégués d’effectuer des actions sur les dossiers ou éléments d’un propriétaire de boîte aux lettres. L’accès explicite est accordé à un délégué lorsqu’il inclut le nom de dossier connu du dossier d’un propriétaire de boîte aux lettres ainsi que l’adresse SMTP du propriétaire de la boîte aux lettres dans une demande adressée au serveur. L’accès est explicite, car la demande du délégué indique explicitement que le contexte de la méthode ou de l’opération est la boîte aux lettres du propriétaire de la boîte aux lettres, et non la boîte aux lettres du délégué.
L’accès explicite définit le contexte de toutes les méthodes ou opérations effectuées sur les dossiers ou les éléments qui avancent. Tous les ID d’élément et de dossier renvoyés lorsque l’accès explicite est défini s’identifient de manière unique comme appartenant au propriétaire de la boîte aux lettres (bien qu’ils ne soient pas dans un format lisible par l’homme). De cette façon, l’application n’a pas besoin de spécifier l’adresse SMTP du propriétaire de la boîte aux lettres à plusieurs reprises ; le contexte est masqué dans les identificateurs. Une fois qu’un élément ou un dossier est identifié, un délégué utilise en fait un accès implicite pour modifier l’élément. La figure suivante montre le processus d’obtention d’un accès explicite et implicite.
Figure 2. Demande d’accès explicite et implicite à un élément ou à un dossier
Vous pouvez définir un accès explicite dans de nombreux scénarios différents. En fait, chaque fois que vous envoyez un ID de dossier dans une méthode ou une opération, vous pouvez définir un accès explicite. Cela peut inclure la recherche de dossiers, la recherche de rendez-vous, l’obtention d’éléments, la recherche de conversations, etc.
Accès explicite et API managée EWS
Vous pouvez lancer l’accès délégué explicite à l’aide de l’une des méthodes surchargées suivantes qui prennent un paramètre d’entrée FolderId pour identifier le dossier cible :
Et bien plus encore !
Vous pouvez utiliser le paramètre FolderId dans chacune de ces méthodes pour identifier le dossier cible du propriétaire de la boîte aux lettres, comme suit.
new FolderId(WellKnownFolderName.Calendar, "primary@contoso.com");
Par exemple, pour établir une liaison au dossier Calendrier, FolderId de cette méthode Bind spécifie le nom de dossier connu et l’adresse SMTP du propriétaire de la boîte aux lettres.
CalendarFolder calendar = CalendarFolder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "primary@contoso.com"), new PropertySet());
En spécifiant le nom de dossier connu et l’adresse SMTP, le délégué peut se lier au dossier Calendrier du propriétaire de la boîte aux lettres, ce qui permet d’accéder explicitement au dossier. Toutes les demandes suivantes d’accès implicite aux éléments du dossier s’appuient ensuite sur le contexte retourné dans les ID d’élément et les ID de dossier. Essentiellement, les identificateurs contiennent le contexte des appels d’accès délégué implicites. Ou, pour récupérer l’ID d’élément d’un élément qui répond à des critères spécifiques, utilisez ce qui suit.
FindItemsResults<Item> results = service.FindItems(new FolderId(WellKnownFolderName.Calendar, "primary@contoso.com"), filter, view);
Dans ce cas, l’ID d’élément est retourné, puis le délégué peut utiliser l’accès implicite pour apporter des modifications à l’élément à l’aide de l’ID d’élément.
Vous n’avez pas besoin de relancer l’accès explicite tant que vous n’avez pas besoin d’un ID d’élément ou d’un ID de dossier auquel vous n’avez pas accédé via l’accès explicite existant.
Accès explicite et EWS
Vous pouvez lancer un accès explicite à l’aide des opérations GetFolder, FindItemou FindFolder . Ces opérations permettent d’utiliser l’élément DistinguishedFolderId pour identifier le dossier cible. L’élément DistinguishedFolderId a un seul élément enfant facultatif, l’élément Mailbox . L’élément Mailbox, lorsqu’il est utilisé en tant qu’enfant de l’élément DistinguishedFolderId, spécifie la boîte aux lettres à laquelle le délégué peut accéder. Si l’utilisateur appelant est autorisé à accéder au dossier du propriétaire de la boîte aux lettres, la réponse contient une collection d’identificateurs pour les éléments ou dossiers de cette boîte aux lettres. Les identificateurs d’élément et de dossier retournés dans la réponse peuvent être utilisés pour l’accès délégué implicite.
Accès implicite
L’accès implicite est utilisé après qu’un délégué a récupéré l’ID d’un élément ou d’un dossier dans la boîte aux lettres du propriétaire de la boîte aux lettres et que le délégué souhaite mettre à jour, supprimer ou copier l’élément. Lorsque le délégué utilise cet ID d’élément ou de dossier dans une demande, les modifications sont apportées à l’élément dans la boîte aux lettres du propriétaire de la boîte aux lettres. Le délégué n’a pas besoin d’inclure l’adresse SMTP du propriétaire de la boîte aux lettres.
Par exemple, lorsqu’un délégué a l’ID de l’un des dossiers du propriétaire de la boîte aux lettres, il peut effectuer une opération FindItem sur ce dossier à l’aide de l’ID de dossier, sans identifier explicitement la boîte aux lettres du propriétaire de la boîte aux lettres. À ce stade, le délégué peut effectuer des actions sur le dossier du propriétaire de la boîte aux lettres à l’aide des ID retournés dans les réponses.
Accès implicite et API managée EWS
Si un ID d’élément a été récupéré par la méthode FindItems , cet ID d’élément peut être utilisé dans un appel de méthode Item.Bind suivant pour lier à l’élément. Vous pouvez ensuite appeler la méthode — Item.Update, Item.Deleteou Item.Copy, ou n’importe quel appel de méthode qui nécessite un ID d’élément, si nécessaire pour terminer votre tâche. Tant que le délégué dispose des autorisations appropriées sur le dossier qui contient l’élément (et, le cas échéant, le dossier vers lequel l’élément est déplacé), le délégué peut apporter des modifications en fonction de ses niveaux d’autorisation.
Accès implicite et EWS
Si un ID d’élément a été récupéré par l’opération FindItem , cet ID d’élément peut être utilisé dans les opérations GetItem suivantes pour établir une liaison à l’élément. Vous pouvez ensuite appeler l’opération UpdateItem, DeleteItemou CopyItem ou toute opération nécessitant un ID d’élément si nécessaire pour terminer votre tâche. Tant que le délégué dispose des autorisations appropriées sur le dossier qui contient l’élément (et, le cas échéant, le dossier vers lequel l’élément est déplacé), le délégué peut apporter des modifications en fonction de ses niveaux d’autorisation.
Contenu de cette section
Ajouter et supprimer des délégués en utilisant EWS dans Exchange
Accéder à un calendrier en tant que délégué en utilisant EWS dans Exchange
Accéder aux contacts en tant que délégué à l’aide d’EWS dans Exchange
Accéder à la messagerie en tant que délégué à l’aide d’EWS dans Exchange
Définir des autorisations de dossier pour un autre utilisateur en utilisant EWS dans Exchange
Gestion des erreurs liées à la délégation dans EWS dans Exchange