Exchange での代理人アクセスと EWSDelegate access and EWS in Exchange

Exchange の EWS マネージ API と EWS を使用してユーザーのメールボックスに代理人アクセスできるようにする方法を説明します。Find out how to use the EWS Managed API and EWS in Exchange to provide delegate access to users' mailboxes.

ユーザーが他のユーザーのメールボックスにアクセスできるようにするには、次の 3 つの方法のいずれかを使用できます。You can enable users to access other users' mailboxes in one of three ways:

  • 代理人を追加し、各代理人にアクセス許可を指定します。By adding delegates and specifying permissions for each delegate.

  • フォルダーのアクセス許可を直接変更します。By modifying folder permissions directly.

  • 偽装を使用します。By using impersonation.

委任、およびフォルダーのアクセス許可は、各メールボックスに個別にアクセス許可を追加する必要があるため、少数のユーザーにのみアクセス許可を付与する場合に最適です。偽装は、1 つのサービス アカウントによるデータベース内のすべてのメールボックスへのアクセスを簡単に許可できるため、多数のメールボックスを処理するときに最適です。図 1 は、各種のアクセスの相違点を示しています。Delegation and folder permissions are best when you're only granting access to a few users, because you have to add permissions individually to each mailbox. Impersonation is the best choice when you're dealing with quantities of mailboxes, because you can easily enable one service account to access every mailbox in a database. Figure 1 shows some of the differences between each type of access.

図 1. 他のユーザーのメールボックスにアクセスする方法Figure 1. Ways to access other users' mailboxes

メールボックスのアクセス タイプ、各タイプのメールボックス所有者と代理人の関係、およびアクセス許可のタイプを示す図。委任用のアクセス許可またはフォルダー アクセス許可のために送信します。偽装のためのアクセス許可として送信します。

メールの送信や会議のスケジュールに関して、代理人には「代理送信」のアクセス許可が与えられます。そのため、代理人から送信されたメールまたは会議出席依頼の受信者がそれを Outlook で受信した場合、「メールボックスの所有者代理人として送信」したことが表示されます。When it comes to sending mail or scheduling meetings, delegates can be given "send on behalf of" permissions, so the recipient of an email or a meeting request that was sent by a delegate will see " delegate on behalf of mailbox owner " when they receive the email or meeting request in Outlook. 「代理人として送信」のテキストを含めることは、クライアント実装の詳細事項の 1 つです。これは "from" と "sender" の値を使用して作成できます。Including the "send on behalf of" text is a client implementation detail - and can be created by using the "from" and "sender" values. "from" の値はメールボックスの所有者を示し、"sender" の値はメール送信した代理人を示します。The "from" value indicates the mailbox owner, and the "sender" value indicates the delegate that sent the mail. ユーザーを偽装しているサービス アカウントが、メールボックスの所有者の代わりにメールの送信や会議のスケジュールを行う場合、メッセージはメールボックスの所有者「として」送信されます。If a service account impersonating a user sends an email or schedules a meeting for the mailbox owner, the message is "sent as" the mailbox owner. 受信者には、サービス アカウントから送信されたメールであることを確認する手段はありません。There is no way for the recipient to know the mail was sent by the service account. フォルダーのアクセス許可が付与され、代理人としてのアクセス権が付与されていないユーザーは、メールボックスの所有者として送信したり、代理送信したりできません。Users who are granted folder permissions and not delegate access are not able to "send as" or "send on behalf of" of a mailbox owner. そのようなユーザーはメールボックスのフォルダーへのアクセス権を持ち、フォルダーにアイテムを作成できる場合もありますが、アイテムを送信することはできません。They have access to the mailbox folders, and might be able to create items in the folders, but they cannot send the items.

フォルダーのアクセス許可を直接変更するのが適しているのはどのような場合でしょうか。When is it appropriate to modify folder permissions directly? 一般に、フォルダーへのアクセスをユーザーに提供するものの「代理送信」のアクセス許可は付与しない場合、アクセス許可の要件が DelegateFolderPermissionLevel EWS マネージ API 列挙値または PermissionLevel EWS の要素の値にマップしない場合、または単一のカスタム フォルダーへのアクセスをユーザーに提供する場合です。Generally, when you want to provide a user access to a folder, but do not want to grant the user "send on behalf of" permissions, when your permissions requirements do not map to the DelegateFolderPermissionLevel EWS Managed API enumeration values or the PermissionLevel EWS element values, or when you want to provide a user access to a single custom folder.

フォルダーのアクセス許可を変更するだけで目標を達成でき、代理人を追加する必要がない場合 (つまり、「代理送信」のアクセス許可が必要ない場合) は、「Exchange で EWS を使用して別のユーザーのフォルダーのアクセス許可を設定する」を参照してください。If you only need to modify folder permissions to achieve your goal, and do not need to add a delegate (that is, you don't need "send on behalf of" permissions), see Set folder permissions for another user by using EWS in Exchange.

なお、Outlook または Exchange Server PowerShell (Exchange 管理シェル) を使用して代理人アクセスを設定することもできます。Note that you can also use Outlook or the Exchange Server PowerShell (Exchange Management Shell) to set up delegate access.

代理人アクセスはどのように機能するかHow does delegate access work?

代理人アクセスにより、ユーザーはメールボックス所有者のフォルダーの一部または全部にアクセスし、メールボックス所有者の代理として行動できるようになります。Delegate access enables users to access some or all of the mailbox owner's folders and act on behalf of the mailbox owner. メールボックスの所有者はユーザーの場合もあれば、会議室のようなリソースの場合もあります。The mailbox owner can be a user, or a resource, like a conference room. たとえば、予約要求を処理するため、受付係に会議室の予定表フォルダーへの代理アクセス権を付与できます。For example, a receptionist can be granted delegate permissions to a conference room's calendar folder, to handle booking requests. EWS マネージ API または EWS を使用すれば、メールボックスの所有者または管理者は、代理人を追加すること、代理人がアクセスできるフォルダーを指定すること、そのフォルダーに対するアクセス許可を指定することができるようになります。You can use the EWS Managed API or EWS to enable the mailbox owner or an administrator to add a delegate, specify what folders the delegate can access, and then specify permissions for that folder. 代理人には、次のフォルダーへのアクセス権を与えることができます。Delegates can be granted access to the following folders:

  • カレンダーCalendar

  • タスクTasks

  • 受信トレイInbox

  • 連絡先Contacts

  • メモNotes

  • ジャーナルJournal

これらのフォルダーの 1 つ以上に対する代理人アクセスを持つユーザーは、フォルダーに設定されているアクセス許可に応じて、そのフォルダーおよび子フォルダー内のアイテムの作成、取得、更新、削除、コピー、検索ができます。アプリケーションがこれらのアクションを実行する方法は、明示的なアクセスと暗黙的なアクセスのどちらが必要かに応じて異なります。When a user has delegate access to one or more of these folders, they can create, get, update, delete, copy, and search for items in that folder and any child folders, depending on the permissions set on the folder. The way in which the application performs these actions depends on whether explicit or implicit access is required.

代理アクセス権Delegate permissions

管理者またはメールボックスの所有者がメールボックスに代理人を追加するときは、1 つ以上のフォルダーのアクセス許可レベルを設定することもできます。When an administrator or mailbox owner adds a delegate to a mailbox, they can also set the permission level for one or more folders. フォルダーのアクセス許可レベルが設定されていない場合、アクセス許可の値の既定値は、[なし] に設定されます。If a permission level is not set for a folder, the permission value defaults to None. あるフォルダーに対して複数のユーザーが同じアクセス許可レベルを持つことも、ユーザーが持つアクセス許可レベルをフォルダーごとに変えることもできます。Multiple users can have the same permission level on a folder, and users can have different permission levels for different folders. EWS マネージ API を使用する場合は、DelegateUser.Permissions プロパティ (各フォルダーの DelegateFolderPermissionLevel 列挙値の 1 つを指定する) を使用して、フォルダーに対する代理アクセス権を設定します。If you're using the EWS Managed API, you use the DelegateUser.Permissions property, which contains one of the DelegateFolderPermissionLevel enumeration values for each folder, to set delegate permissions on folders. EWS を使用する場合は、DelegatePermissions 要素を使用して代理アクセス権を設定し、PermissionLevel 要素を使用してアクセス許可レベルを定義します。If you're using EWS, you use the DelegatePermissions element to set delegate permissions, and the PermissionLevel element to define the permission level.

表 2. 代理アクセス権レベルTable 2. Delegate permission levels

アクセス許可レベルPermission level 説明Description
なしNone
これはすべてのフォルダーの既定値です。This is the default value for all folders.
AuthorAuthor
代理人は、アイテムの読み取りと作成、自分が作成したアイテムの変更と削除ができます。A delegate can read and create items, and modify and delete items they create. たとえば、代理人はタスクの依頼や会議出席依頼をメールボックスの所有者のタスクのフォルダーまたは予定表のフォルダーに直接作成して、メールボックスの所有者の代わりにいずれかのアイテムを送信できます。For example, a delegate can create task requests and meeting requests directly in the mailbox owner's Task or Calendar folder, and then send either item on the mailbox owner's behalf.
Editor (編集者)Editor
代理人は、Author にできるすべてのことに加え、メールボックスの所有者が作成したアイテムの変更や削除もできます。A delegate can do everything an Author can do, and also modify and delete the items the mailbox owner created.
ReviewerReviewer
代理人はアイテムを読むことができます。たとえば、Reviewer のアクセス許可を持つ代理人は、別のユーザーの受信トレイのメッセージを読むことができます。A delegate can read items; for example a delegate with Reviewer permission can read messages in another person's Inbox.
CustomCustom
メールボックスの所有者が代理人にアクセス許可のカスタム セットを与えている場合です。The mailbox owner has granted a custom set of permissions to the delegate.

DelegateUser.ViewPrivateItems EWS マネージ API プロパティと ViewPrivateItems EWS 要素は、メール、連絡先、予定表、タスク、メモ、ジャーナルのすべてのフォルダーを含む、メールボックス所有者のすべてのフォルダーに影響を与えるグローバルな設定です。The DelgateUser.ViewPrivateItems EWS Managed API property and the ViewPrivateItems EWS element is a global setting that affects all the mailbox owner's folders, including all Mail, Contacts, Calendar, Tasks, Notes, and Journal folders. 1 つのフォルダーだけを選んで、その中の非公開アイテムへのアクセスを許可することはできません。You cannot allow access to private items in only one folder.

明示的なアクセスExplicit access

簡単に言えば、明示的なアクセスとは、代理人がメールボックス所有者のフォルダーまたはアイテムに対してアクションを実行するための通路のようなものです。代理人がサーバーへの要求にメールボックスの所有者のフォルダーの既知のフォルダー名とメールボックスの所有者の SMTP アドレスを含めると、代理人に明示的なアクセスが与えられます。このアクセスは明示的です。なぜなら、代理人の要求は、メソッドまたは操作のコンテキストがメールボックス所有者のメールボックスであって、代理人のメールボックスではないことを、明示的に示しているためです。Simply put, explicit access is the entry way for delegates to perform actions on a mailbox owner's folders or items. Explicit access is granted to a delegate when they include the well-known folder name for a mailbox owner's folder along with the mailbox owner's SMTP address in a request to the server. The access is explicit because the delegate's request explicitly states that the context for the method or operation is the mailbox owner's mailbox, and not the delegate's mailbox.

明示的なアクセスは、この先、フォルダーやアイテムで実行されるすべてのメソッドや操作のためにコンテキストを定義します。明示的なアクセスが設定されている場合に返されるすべてのアイテムとフォルダーの ID は、自らをメールボックスの所有者に属するものとして一意に識別します (ただし人間が読める形式ではありません)。こうして、アプリケーションはメールボックスの所有者の SMTP アドレスを繰り返し指定する必要がなくなります。コンテキストは識別子の中に隠されます。アイテムまたはフォルダーが識別された後、代理人はアイテムを変更するために、実際には暗黙的なアクセスを使用します。次の図に、明示的なアクセスと暗黙的なアクセスを行うプロセスを示します。Explicit access defines the context for all methods or operations performed on the folders or items moving forward. All item and folder IDs returned when the explicit access is set uniquely identify themselves as belonging to the mailbox owner (although not in any human readable format). This way, the application doesn't need to specify the mailbox owner's SMTP address again and again; the context is hidden in the identifiers. After an item or folder is identified, a delegate actually uses implicit access to modify the item. The following figure shows the process of getting explicit and implicit access.

図 2. アイテムまたはフォルダーへの明示的および暗黙的なアクセスの要求Figure 2. Requesting explicit and implicit access to an item or folder

アプリケーションが明示的なアクセスの要求を送信し、サーバーからの応答を受け取り、暗黙的なアクセスの要求を送信し、サーバーからの応答を受け取る流れを示した図。

様々なシナリオで明示的なアクセスを設定できます。基本的に、フォルダー ID をメソッドまたは操作に入れて送信する場合は常に、明示的なアクセスを設定できます。これには、フォルダーの検索、予定の検索、アイテムの取得、会話の検索などがあります。You can set explicit access in many different scenarios. Essentially, any time you're sending a folder ID in a method or operation, you can set explicit access. This can include finding folders, finding appointments, getting items, finding conversations, and so on.

明示的なアクセスと EWS マネージ APIExplicit access and the EWS Managed API

FolderId 入力パラメーターでターゲット フォルダーを指定する次のオーバーロードされたメソッドのいずれかを使用すれば、明示的な代理人アクセスを開始できます。You can initiate explicit delegate access by using any of the following overloaded methods that take a FolderId input parameter to identify the target folder:

これらの各メソッドで FolderId パラメーターを使用して、次のようにメールボックス所有者のターゲット フォルダーを指定できます。You can use the FolderId parameter in each of these methods to identify the mailbox owner's target folder, as follows.

new FolderId(WellKnownFolderName.Calendar, "primary@contoso.com");

たとえば、予定表フォルダーにバインドするには、次の Bind メソッドの FolderId で既知のフォルダー名とメールボックス所有者の SMTP アドレスを指定します。For example, to bind to the Calendar folder, the FolderId in this Bind method specifies the well-known folder name, and the mailbox owner's SMTP address.

CalendarFolder calendar = CalendarFolder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "primary@contoso.com"), new PropertySet());

既知のフォルダー名と SMTP アドレスを指定すると、代理人はメールボックス所有者の予定表フォルダーにバインドできるため、フォルダーへの明示的なアクセスを取得できます。これ以降、フォルダー内のアイテムに対する暗黙的なアクセスのすべての要求では、アイテム ID とフォルダー ID で返されるコンテキストを利用します。基本的に、識別子には暗黙的な代理人アクセスの呼び出しのコンテキストが含まれています。または、特定の条件を満たすアイテムのアイテム ID を取得するには、以下を使用します。By specifying the well-known folder name and the SMTP address, the delegate can bind to the mailbox owner's Calendar folder — thereby gaining explicit access to the folder. All subsequent requests for implicit access to items in the folder then rely on the context returned in the item IDs and folder IDs. Essentially, the identifiers contain the context for the implied delegate access calls. Or, to retrieve the item ID of an item that meets specific criteria, use the following.

FindItemsResults<Item> results = service.FindItems(new FolderId(WellKnownFolderName.Calendar, "primary@contoso.com"), filter, view);

この場合、アイテム ID が返された後、このアイテム ID を使用すれば、代理人は暗黙的なアクセスでアイテムを変更できます。In this case the item ID is returned, and then the delegate can then use implicit access to make changes to the item by using the item ID.

既存の明示的なアクセスでアクセスしていないアイテム ID またはフォルダー ID が必要になるまで、明示的なアクセスをもう一度開始する必要はありません。You don't have to initiate explicit access again until you require an item ID or a folder ID that you didn't access via the existing explicit access.

明示的なアクセスと EWSExplicit access and EWS

GetFolderFindItem、または FindFolder 操作を使用して、明示的なアクセスを開始できます。これらの操作は、DistinguishedFolderId 要素を使用して対象フォルダーを指定するオプションを提供します。DistinguishedFolderId 要素には省略可能な子要素が 1 つだけあります。すなわち、Mailbox 要素です。Mailbox 要素は、DistinguishedFolderId 要素の子として使用する場合、代理人がアクセスするメールボックスを指定します。呼び出し元のユーザーにメールボックス所有者のフォルダーにアクセスする権限がある場合、応答にはそのメールボックス内のアイテムまたはフォルダーの識別子のコレクションが含まれます。応答で返されるアイテムおよびフォルダーの識別子を暗黙的な代理人アクセスで使用できます。 You can initiate explicit access by using the GetFolder, FindItem, or FindFolder operations. These operations provide the option to use the DistinguishedFolderId element to identify the target folder. The DistinguishedFolderId element has a single optional child element, the Mailbox element. The Mailbox element, when used as a child of the DistinguishedFolderId element, specifies the mailbox for the delegate to access. If the calling user has permission to access the mailbox owner's folder, the response will contain a collection of identifiers to items or folders in that mailbox. The item and folder identifiers that are returned in the response can be used for implicit delegate access.

暗黙的なアクセスImplicit access

代理人がメールボックスの所有者のメールボックス内のアイテムまたはフォルダーの ID を取得したら、アイテムの更新、削除、またはコピーを行うとき、後は暗黙的なアクセスが使用されます。代理人が要求でそのアイテム ID またはフォルダー ID を使用すると、メールボックス所有者のメールボックス内のアイテムに対して変更が加えられます。代理人はメールボックス所有者の SMTP アドレスを含める必要はありません。 Implicit access is used after a delegate has retrieved the ID for an item or folder in the mailbox owner's mailbox and the delegate wants to update, delete, or copy the item. When the delegate uses that item or folder ID in a request, the changes are made to the item in the mailbox owner's mailbox. The delegate does not have to include the mailbox owner's SMTP address.

たとえば、代理人がメールボックス所有者のいずれかのフォルダーの ID を持っている場合、フォルダー ID を使用すれば、そのフォルダーに対して FindItem 操作を実行でき、メールボックス所有者のメールボックスを明示的に指定する必要はありません。その時点で、代理人は応答で返される ID を使用して、メールボックス所有者のフォルダーにアクションを実行できます。For example, when a delegate has the ID of one of the mailbox owner's folders, the delegate can perform a FindItem operation on that folder by using the folder ID, without explicitly identifying the mailbox owner's mailbox. At that point, the delegate can perform actions on the mailbox owner's folder by using the IDs that are returned in the responses.

暗黙的なアクセスと EWS マネージ APIImplicit access and the EWS Managed API

FindItems メソッドでアイテム ID を取得したら、後続の Item.Bind メソッドの呼び出しでそのアイテム ID を使用し、アイテムにバインドできます。If an item ID was retrieved by the FindItems method, that item ID can be used in a subsequent Item.Bind method call to bind to the item. 次いで、タスクを完了するために必要な Item.UpdateItem.DeleteItem.Copy メソッド (あるいは、アイテム ID を必要とする任意のメソッド呼び出し) を呼び出すことができます。You can then call the Item.Update, Item.Delete, or Item.Copy method — or any method call that requires an item ID — as needed to complete your task. アイテムを含むフォルダー (および該当する場合は、アイテムの移動先のフォルダー) の適切なアクセス許可を持っているなら、代理人はアクセス許可レベルに応じて変更を実行できます。As long as the delegate has appropriate permissions to the folder that contains the item (and, if applicable, the folder the item is moving to), the delegate can make changes according to their permission levels.

暗黙的なアクセスと EWSImplicit access and EWS

FindItem 操作でアイテム ID を取得したら、後続の GetItem 操作でそのアイテム ID を使用して、アイテムにバインドできます。次いで、タスクを完了するために必要な UpdateItemDeleteItemCopyItem 操作 (あるいはアイテム ID を必要とする任意の操作) を呼び出すことができます。アイテムを含むフォルダー (および該当する場合は、アイテムの移動先のフォルダー) の適切なアクセス許可を持っているなら、代理人はアクセス許可レベルに応じて変更を実行できます。If an item ID was retrieved by the FindItem operation, that item ID can be used in subsequent GetItem operations to bind to the item. You can then call the UpdateItem, DeleteItem, or CopyItem operation — or any operation that requires an item ID — as needed to complete your task. As long as the delegate has appropriate permissions to the folder that contains the item (and, if applicable, the folder the item is moving to), the delegate can make changes according to their permission levels.

このセクションの内容In this section

関連項目See also