Share via


Festlegen von Ordnerberechtigungen für einen anderen Benutzer mithilfe der EWS in Exchange

Erfahren Sie, wie Sie Berechtigungsstufen für einen Ordner mithilfe der verwalteten EWS-API oder EWS in Exchange festlegen.

Berechtigungen auf Ordnerebene ermöglichen Benutzern den Zugriff auf einen oder mehrere Ordner im Postfach eines anderen Benutzers. Ordnerberechtigungen ähneln dem Delegieren des Zugriffs, unterscheiden sich jedoch in den folgenden Punkten:

  • Ordnerberechtigungen ermöglichen es einem Benutzer nicht, "im Auftrag von" oder "senden als" einen anderen Benutzer zu senden. Sie ermöglichen nur den Zugriff auf Ordner. Benutzer können Elemente in diesen Ordnern erstellen, aber sie können sie nicht senden.

  • Sie können Ordnerberechtigungen für jeden Ordner im Postfach festlegen, aber Sie können nur einen Delegaten zu den Ordnern Kalender, Kontakte, Posteingang, Journal, Notizen und Aufgaben hinzufügen.

  • Sie können eine Reihe von Berechtigungen für einen bestimmten Ordner festlegen. Wenn Sie einen Delegaten hinzufügen, können Sie nur eine von fünf Berechtigungsstufen zuweisen.

  • Sie können Ordnerberechtigungen für anonyme und Standardbenutzer festlegen. Sie können nur Stellvertretungszugriff auf ein E-Mail-aktiviertes Konto gewähren.

Wenn Sie mit Access Control Entries (ACEs) und Discretionary Access Control Lists (DACLs) vertraut sind, wissen Sie, dass ein Benutzer nur einen Berechtigungssatz für jeden Ordner haben kann. Wenn Sie versuchen, einen Satz von Berechtigungen für einen Benutzer hinzuzufügen, der bereits über einen Berechtigungssatz verfügt, erhalten Sie eine Fehlermeldung. Wenn Sie Berechtigungen für einen Ordner hinzufügen, entfernen oder aktualisieren, erhalten Sie die aktuelle DACL, fügen oder entfernen alle ACEs hinzu und senden dann die aktualisierte DACL. Sie können nicht mehrere ACEs für denselben Benutzer hinzufügen. Wenn Sie Berechtigungen mithilfe der verwalteten EWS-API aktualisieren, müssen Sie den aktuellen ACE des Benutzers entfernen und dann der Sammlung seinen neuen ACE hinzufügen. Wenn Sie EWS verwenden, ersetzen Sie einfach den vorherigen Satz von ACEs durch die neuen.

Wenn Sie mehrere Berechtigungsänderungen an einem einzelnen Ordner vornehmen, können Sie Batchzufügungen, Entfernungen oder Aktualisierungen vornehmen. Beachten Sie nur, dass Sie keine Batchbenutzerupdates für mehrere Ordner durchführen können. Ein Aufruf ist erforderlich, um die Berechtigungen für einen einzelnen Ordner zu erhalten, und ein zweiter Aufruf ist erforderlich, um die Berechtigungen für diesen Ordner zu aktualisieren. Wenn Sie Benutzerberechtigungen hinzufügen, entfernen oder aktualisieren, verwenden Sie für jede Aufgabe die gleichen beiden Methodenaufrufe oder -vorgänge.

Tabelle 1. Verwaltete EWS-API-Methoden und EWS-Vorgänge zum Festlegen von Ordnerberechtigungen

Aktion Verwenden Sie diese verwaltete EWS-API-Methode... Zu verwendende EWS-Operation...
Aktivieren, Entfernen oder Aktualisieren von Ordnerberechtigungen
Folder.Bind gefolgt von Folder.Update
GetFolder gefolgt von UpdateFolder
Erstellen eines Ordners und Definieren von Ordnerberechtigungen
Folder.Save
CreateFolder

Ordnerberechtigungen

Beim Festlegen von Ordnerberechtigungen für einen bestimmten Ordner stehen Ihnen einige Optionen zur Auswahl. Sie können für jeden Benutzer eine Berechtigungsstufe für einen Ordner festlegen, die der DACL einen Satz vordefinierter einzelner Berechtigungen hinzufügt, oder Sie können einzelne Berechtigungen für einen Ordner festlegen– sie können jedoch nicht mischen und abgleichen.

Die folgenden einzelnen Berechtigungen sind verfügbar:

  • Kann erstellen
  • Kann Unterordner erstellen
  • Ordnerbesitzer
  • Ist der Ordner sichtbar?
  • Ist Der Ordnerkontakt
  • Elemente bearbeiten
  • Löschen von Elementen
  • Elemente lesen

Darüber hinaus sind die folgenden Berechtigungsstufen verfügbar, die eine Teilmenge einzelner Berechtigungen und Werte definieren, wie in Tabelle 2 dargestellt:

  • Keine
  • Besitzer
  • PublishingEditor
  • Editor
  • PublishingAuthor
  • Ursprung
  • NoneditingAuthor
  • Reviewer
  • Contributor
  • Benutzerdefiniert: Dieser Wert kann von der Anwendung nicht festgelegt werden. Der Server legt diesen Wert fest, wenn die Anwendung eine benutzerdefinierte Sammlung einzelner Berechtigungen enthält.
  • FreeBusyTimeOnly: Dies kann nur für Kalenderordner festgelegt werden.
  • FreeBusyTimeAndSubjectAndLocation: Dies kann nur für Kalenderordner festgelegt werden.

Die folgende Tabelle zeigt, welche einzelnen Berechtigungen standardmäßig basierend auf der Berechtigungsstufe angewendet werden.

Tabelle 2. Einzelne Berechtigungen nach Berechtigungsstufe

Berechtigungsstufe Kann Elemente erstellen Kann Unterordner erstellen Ordnerbesitzer Ist der Ordner sichtbar? Ist Der Ordnerkontakt Elemente bearbeiten Löschen von Elementen Kann Elemente lesen
Keine
Falsch
Falsch
Falsch
Falsch
Falsch
Keine
Keine
Keine
Besitzer
True
True
True
True
True
Alle
Alle
FullDetails
PublishingEditor
True
True
Falsch
True
Falsch
Alle
Alle
FullDetails
Editor
True
Falsch
Falsch
True
Falsch
Alle
Alle
FullDetails
PublishingAuthor
True
True
Falsch
True
Falsch
Im besitz
Im besitz
FullDetails
Ursprung
True
Falsch
Falsch
True
Falsch
Im besitz
Im besitz
FullDetails
NoneditingAuthor
True
Falsch
Falsch
True
Falsch
Keine
Im besitz
FullDetails
Reviewer
Falsch
Falsch
Falsch
True
Falsch
Keine
Keine
FullDetails
Contributor
True
Falsch
Falsch
True
Falsch
Keine
Keine
Keine

Wenn Sie in der Berechtigungsanforderung auf Ordnerebene eine nicht benutzerdefinierte Berechtigungsstufe angeben, müssen Sie die einzelnen Berechtigungseinstellungen nicht angeben. Wenn Sie beim Festlegen einer Berechtigungsstufe eine einzelne Berechtigung angeben, wird in der Antwort ein ErrorInvalidPermissionSettings-Fehler zurückgegeben.

Hinzufügen von Ordnerberechtigungen mithilfe der verwalteten EWS-API

Im folgenden Codebeispiel wird gezeigt, wie Sie die verwaltete EWS-API für Folgendes verwenden:

In diesem Beispiel wird davon ausgegangen, dass der Dienst ein gültiges ExchangeService-Objekt für den Postfachbesitzer ist und dass der Benutzer bei einem Exchange-Server authentifiziert wurde.

static void EnableFolderPermissions(ExchangeService service)
{
    // Create a property set to use for folder binding.
    PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, FolderSchema.Permissions);
    // Specify the SMTP address of the new user and the folder permissions level.
    FolderPermission fldperm = new FolderPermission("sadie@contoso.com", FolderPermissionLevel.Editor);
    
    // Bind to the folder and get the current permissions. 
    // This call results in a GetFolder call to EWS.
    Folder sentItemsFolder = Folder.Bind(service, WellKnownFolderName.SentItems, propSet);
 
    // Add the permissions for the new user to the Sent Items DACL.
    sentItemsFolder.Permissions.Add(fldperm);
    // This call results in a UpdateFolder call to EWS.
    sentItemsFolder.Update();
}

Die folgende Codezeile gibt die Berechtigungsstufe an.

    FolderPermission fldperm = new FolderPermission("sadie@contoso.com", FolderPermissionLevel.Editor);

Wenn Sie die benutzerdefinierte Berechtigungsstufe verwenden möchten, verwenden Sie stattdessen diesen Code.

FolderPermission fldperm = new FolderPermission();
fldperm.UserId = "sadie@Contoso1000.onmicrosoft.com";
fldperm.CanCreateItems = true;
fldperm.CanCreateSubFolders = true;
…

Sie können beliebige oder alle beschreibbaren FolderPermission-Eigenschaften festlegen, wenn Sie ein FolderPermission-Objekt mit einer benutzerdefinierten Berechtigungsstufe erstellen. Beachten Sie jedoch, dass FolderPermissionLevel von der Anwendung niemals explizit auf Benutzerdefiniert festgelegt wird. FolderPermissionLevel wird nur dann auf Benutzerdefiniert festgelegt, wenn Sie ein FolderPermission-Objekt erstellen und einzelne Berechtigungen festlegen.

Hinzufügen von Ordnerberechtigungen mithilfe von EWS

Die folgenden EWS-Codebeispiele zeigen, wie Sie Berechtigungen zu einem bestimmten Ordner hinzufügen, indem Sie die aktuellen Berechtigungen abrufen und dann eine Liste mit neuen Berechtigungen übermitteln.

Der erste Schritt besteht darin, eine GetFolder-Anforderung zu senden, bei der der DistinguishedFolderId-Wert den Ordner angibt, in dem Berechtigungen hinzugefügt werden sollen (in diesem Beispiel der Ordner Gesendete Elemente), und der FieldURI-Wert ordner:PermissionSet enthält. Diese Anforderung ruft die Berechtigungseinstellungen für den angegebenen Ordner ab.

Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die Bind-Methode aufrufen, um Ordnerberechtigungen hinzuzufügen.

  <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                 xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
                 xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types" 
                 xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
      <t:RequestServerVersion Version="Exchange2007_SP1" />
    </soap:Header>
    <soap:Body>
      <m:GetFolder>
        <m:FolderShape>
          <t:BaseShape>IdOnly</t:BaseShape>
          <t:AdditionalProperties>
            <t:FieldURI FieldURI="folder:PermissionSet" />
          </t:AdditionalProperties>
        </m:FolderShape>
        <m:FolderIds>
          <t:DistinguishedFolderId Id="sentitems" />
        </m:FolderIds>
      </m:GetFolder>
    </soap:Body>
  </soap:Envelope>

Der Server antwortet auf die GetFolder-Anforderung mit einer GetFolderResponse-Nachricht , die den ResponseCode-ElementwertNoError enthält, der angibt, dass der Ordner erfolgreich abgerufen wurde. Die FolderId - und ParentFolderId-Werte wurden aus Gründen der Lesbarkeit gekürzt.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="893"
                         MinorBuildNumber="17"
                         Version="V2_10"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:GetFolderResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
                         xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetFolderResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Folders>
            <t:Folder>
              <t:FolderId Id="CgAAAA=="
                          ChangeKey="AQAAABYAAADOilbYa8KaT7ZgMoTz2P+hAAABiRd1" />
              <t:PermissionSet>
                <t:Permissions>
                  <t:Permission>
                    <t:UserId>
                      <t:DistinguishedUser>Default</t:DistinguishedUser>
                    </t:UserId>
                    <t:CanCreateItems>false</t:CanCreateItems>
                    <t:CanCreateSubFolders>false</t:CanCreateSubFolders>
                    <t:IsFolderOwner>false</t:IsFolderOwner>
                    <t:IsFolderVisible>false</t:IsFolderVisible>
                    <t:IsFolderContact>false</t:IsFolderContact>
                    <t:EditItems>None</t:EditItems>
                    <t:DeleteItems>None</t:DeleteItems>
                    <t:ReadItems>None</t:ReadItems>
                    <t:PermissionLevel>None</t:PermissionLevel>
                  </t:Permission>
                  <t:Permission>
                    <t:UserId>
                      <t:DistinguishedUser>Anonymous</t:DistinguishedUser>
                    </t:UserId>
                    <t:CanCreateItems>false</t:CanCreateItems>
                    <t:CanCreateSubFolders>false</t:CanCreateSubFolders>
                    <t:IsFolderOwner>false</t:IsFolderOwner>
                    <t:IsFolderVisible>false</t:IsFolderVisible>
                    <t:IsFolderContact>false</t:IsFolderContact>
                    <t:EditItems>None</t:EditItems>
                    <t:DeleteItems>None</t:DeleteItems>
                    <t:ReadItems>None</t:ReadItems>
                    <t:PermissionLevel>None</t:PermissionLevel>
                  </t:Permission>
                </t:Permissions>
              </t:PermissionSet>
            </t:Folder>
          </m:Folders>
        </m:GetFolderResponseMessage>
      </m:ResponseMessages>
    </m:GetFolderResponse>
  </s:Body>
</s:Envelope>

Verwenden Sie als Nächstes den Vorgang UpdateFolder , um das aktualisierte PermissionSet zu senden, das die Berechtigung für den neuen Benutzer enthält. Beachten Sie, dass das Einschließen des SetFolderField-Elements für den jeweiligen Ordner in den UpdateFolder-Vorgang alle Berechtigungseinstellungen für den Ordner überschreibt. Ebenso löscht die Option DeleteFolderField des UpdateFolder-Vorgangs auch alle Berechtigungseinstellungen für den Ordner.

Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die Update-Methode aufrufen, um Ordnerberechtigungen hinzuzufügen.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
  </soap:Header>
  <soap:Body>
    <m:UpdateFolder>
      <m:FolderChanges>
        <t:FolderChange>
          <t:FolderId Id="CgAAAA=="
                      ChangeKey="AQAAABYAAADOilbYa8KaT7ZgMoTz2P+hAAABiRd1" />
          <t:Updates>
            <t:SetFolderField>
              <t:FieldURI FieldURI="folder:PermissionSet" />
              <t:Folder>
                <t:PermissionSet>
                  <t:Permissions>
                    <t:Permission>
                      <t:UserId>
                        <t:DistinguishedUser>Default</t:DistinguishedUser>
                      </t:UserId>
                      <t:PermissionLevel>None</t:PermissionLevel>
                    </t:Permission>
                    <t:Permission>
                      <t:UserId>
                        <t:DistinguishedUser>Anonymous</t:DistinguishedUser>
                      </t:UserId>
                      <t:PermissionLevel>None</t:PermissionLevel>
                    </t:Permission>
                    <t:Permission>
                      <t:UserId>
                        <t:PrimarySmtpAddress>sadie@contoso.com</t:PrimarySmtpAddress>
                      </t:UserId>
                      <t:PermissionLevel>Editor</t:PermissionLevel>
                    </t:Permission>
                  </t:Permissions>
                </t:PermissionSet>
              </t:Folder>
            </t:SetFolderField>
          </t:Updates>
        </t:FolderChange>
      </m:FolderChanges>
    </m:UpdateFolder>
  </soap:Body>
</soap:Envelope>

Die folgende Codezeile gibt die Berechtigungsstufe an.

<t:Permission>
    <t:UserId>
        <t:PrimarySmtpAddress>sadie@contoso.com</t:PrimarySmtpAddress>
    </t:UserId>
    <t:PermissionLevel>Editor</t:PermissionLevel>
</t:Permission>

Wenn Sie die benutzerdefinierte Berechtigungsstufe verwenden möchten, verwenden Sie stattdessen diesen Code.

<t:Permission>
    <t:UserId>
        <t:PrimarySmtpAddress> sadie@contoso.com </t:PrimarySmtpAddress>
    </t:UserId>
    <t:CanCreateItems>true</t:CanCreateItems>
    <t:CanCreateSubFolders>true</t:CanCreateSubFolders>
    <t:IsFolderOwner>false</t:IsFolderOwner>
    <t:IsFolderVisible>false</t:IsFolderVisible>
    <t:IsFolderContact>false</t:IsFolderContact>
    <t:EditItems>None</t:EditItems>
    <t:DeleteItems>None</t:DeleteItems>
    <t:ReadItems>None</t:ReadItems>
    <t:PermissionLevel>Custom</t:PermissionLevel>
</t:Permission>

Der Server antwortet auf die UpdateFolder-Anforderung mit einer UpdateFolderResponse-Nachricht , die den ResponseCode-ElementwertNoError enthält, der angibt, dass der Ordner erfolgreich aktualisiert wurde.

Entfernen von Ordnerberechtigungen mithilfe der verwalteten EWS-API

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die verwaltete EWS-API verwenden, um alle Benutzerberechtigungen für einen bestimmten Ordner mit Ausnahme der Standardberechtigungen und anonymen Berechtigungen zu entfernen:

  1. Abrufen der aktuellen Berechtigungen für einen Ordner mithilfe der Bind-Methode .

  2. Durchlaufen der Berechtigungssammlung und Entfernen von Berechtigungen für einzelne Benutzer.

  3. Aufrufen der Update-Methode zum Speichern der Änderungen.

In diesem Beispiel werden alle Benutzerberechtigungen für einen Ordner entfernt. Wenn Sie dieses Beispiel so ändern möchten, dass Berechtigungen nur für einen bestimmten Benutzer entfernt werden, ändern Sie die folgende Codezeile, um entweder den Anzeigenamen oder die SMTP-Adresse des Benutzers zu identifizieren.

if (sentItemsFolder.Permissions[t].UserId.DisplayName != null || sentItemsFolder.Permissions[t].UserId.PrimarySmtpAddress != null)

In diesem Beispiel wird davon ausgegangen, dass der Dienst ein gültiges ExchangeService-Objekt für den Postfachbesitzer ist und dass der Benutzer bei einem Exchange-Server authentifiziert wurde.

static void RemoveFolderPermissions(ExchangeService service)
{
    // Create a property set to use for folder binding.
    PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties, FolderSchema.Permissions);
    // Bind to the folder and get the current permissions. 
    // This call results in a GetFolder call to EWS.
    Folder sentItemsFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.SentItems, "primary@contoso.com"), propSet);
    // Iterate through the collection of permissions and remove permissions for any 
    // user with a display name or SMTP address. This leaves the anonymous and 
    // default user permissions unchanged. 
    if (sentItemsFolder.Permissions.Count != 0)
    {
        for (int t = 0; t < sentItemsFolder.Permissions.Count; t++)
        {
            // Find any permissions associated with the specified user and remove them from the DACL
            if (sentItemsFolder.Permissions[t].UserId.DisplayName != null || sentItemsFolder.Permissions[t].UserId.PrimarySmtpAddress != null)
            {
                sentItemsFolder.Permissions.Remove(sentItemsFolder.Permissions[t]);
            }
        }
    }
    // This call results in an UpdateFolder call to EWS.
    sentItemsFolder.Update();
}

Entfernen von Ordnerberechtigungen mithilfe von EWS

Die folgenden EWS-Codebeispiele zeigen, wie Sie alle Benutzerberechtigungen für einen bestimmten Ordner mit Ausnahme der Standardberechtigungen und anonymen Berechtigungen entfernen.

Senden Sie zunächst eine GetFolder-Anforderung , in der der DistinguishedFolderId-Wert den Ordner angibt, in dem Berechtigungen entfernt werden sollen (in diesem Beispiel der Ordner Gesendete Elemente), und der FieldURI-Wert folder:PermissionSet enthält. Diese Anforderung ruft das PermissionSet für den angegebenen Ordner ab.

Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die Bind-Methode aufrufen, um Ordnerberechtigungen zu entfernen.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
  </soap:Header>
  <soap:Body>
    <m:GetFolder>
      <m:FolderShape>
        <t:BaseShape>AllProperties</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="folder:PermissionSet" />
        </t:AdditionalProperties>
      </m:FolderShape>
      <m:FolderIds>
        <t:DistinguishedFolderId Id="drafts">
          <t:Mailbox>
            <t:EmailAddress>primary@contoso.com</t:EmailAddress>
          </t:Mailbox>
        </t:DistinguishedFolderId>
      </m:FolderIds>
    </m:GetFolder>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die GetFolder-Anforderung mit einer GetFolderResponse-Nachricht , die den ResponseCode-ElementwertNoError enthält, der angibt, dass der Ordner erfolgreich abgerufen wurde. Die Werte der FolderId - und ParentFolderId-Elemente wurden aus Gründen der Lesbarkeit gekürzt.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="893"
                         MinorBuildNumber="17"
                         Version="V2_10"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:GetFolderResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
                         xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetFolderResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Folders>
            <t:Folder>
              <t:FolderId Id="EAAAAA=="
                          ChangeKey="AQAAABYAAADOilbYa8KaT7ZgMoTz2P+hAAABiRd5" />
              <t:ParentFolderId Id="CQAAAA=="
                                ChangeKey="AQAAAA==" />
              <t:FolderClass>IPF.Note</t:FolderClass>
              <t:DisplayName>Drafts</t:DisplayName>
              <t:TotalCount>0</t:TotalCount>
              <t:ChildFolderCount>0</t:ChildFolderCount>
              <t:EffectiveRights>
                <t:CreateAssociated>true</t:CreateAssociated>
                <t:CreateContents>true</t:CreateContents>
                <t:CreateHierarchy>true</t:CreateHierarchy>
                <t:Delete>true</t:Delete>
                <t:Modify>true</t:Modify>
                <t:Read>true</t:Read>
                <t:ViewPrivateItems>true</t:ViewPrivateItems>
              </t:EffectiveRights>
              <t:PermissionSet>
                <t:Permissions>
                  <t:Permission>
                    <t:UserId>
                      <t:DistinguishedUser>Default</t:DistinguishedUser>
                    </t:UserId>
                    <t:CanCreateItems>false</t:CanCreateItems>
                    <t:CanCreateSubFolders>false</t:CanCreateSubFolders>
                    <t:IsFolderOwner>false</t:IsFolderOwner>
                    <t:IsFolderVisible>false</t:IsFolderVisible>
                    <t:IsFolderContact>false</t:IsFolderContact>
                    <t:EditItems>None</t:EditItems>
                    <t:DeleteItems>None</t:DeleteItems>
                    <t:ReadItems>None</t:ReadItems>
                    <t:PermissionLevel>None</t:PermissionLevel>
                  </t:Permission>
                  <t:Permission>
                    <t:UserId>
                      <t:DistinguishedUser>Anonymous</t:DistinguishedUser>
                    </t:UserId>
                    <t:CanCreateItems>false</t:CanCreateItems>
                    <t:CanCreateSubFolders>false</t:CanCreateSubFolders>
                    <t:IsFolderOwner>false</t:IsFolderOwner>
                    <t:IsFolderVisible>false</t:IsFolderVisible>
                    <t:IsFolderContact>false</t:IsFolderContact>
                    <t:EditItems>None</t:EditItems>
                    <t:DeleteItems>None</t:DeleteItems>
                    <t:ReadItems>None</t:ReadItems>
                    <t:PermissionLevel>None</t:PermissionLevel>
                  </t:Permission>
                  <t:Permission>
                    <t:UserId>
                      <t:SID>S-1-5-21-1337771579-694202782-848329751-1535223</t:SID>
                      <t:PrimarySmtpAddress>sadie@Contoso.com</t:PrimarySmtpAddress>
                      <t:DisplayName>Sadie Daniels</t:DisplayName>
                    </t:UserId>
                    <t:CanCreateItems>true</t:CanCreateItems>
                    <t:CanCreateSubFolders>false</t:CanCreateSubFolders>
                    <t:IsFolderOwner>false</t:IsFolderOwner>
                    <t:IsFolderVisible>true</t:IsFolderVisible>
                    <t:IsFolderContact>false</t:IsFolderContact>
                    <t:EditItems>All</t:EditItems>
                    <t:DeleteItems>All</t:DeleteItems>
                    <t:ReadItems>FullDetails</t:ReadItems>
                    <t:PermissionLevel>Editor</t:PermissionLevel>
                  </t:Permission>
                </t:Permissions>
              </t:PermissionSet>
              <t:UnreadCount>0</t:UnreadCount>
            </t:Folder>
          </m:Folders>
        </m:GetFolderResponseMessage>
      </m:ResponseMessages>
    </m:GetFolderResponse>
  </s:Body>
</s:Envelope>

Verwenden Sie als Nächstes den UpdateFolder-Vorgang , um das aktualisierte PermissionSet zu senden, das die Berechtigung für den entfernten Benutzer nicht enthält.

Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die Update-Methode aufrufen, um Ordnerberechtigungen zu entfernen.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
  </soap:Header>
  <soap:Body>
    <m:UpdateFolder>
      <m:FolderChanges>
        <t:FolderChange>
          <t:FolderId Id="EAAAAA=="
                      ChangeKey="AQAAABYAAADOilbYa8KaT7ZgMoTz2P+hAAABiRd5" />
          <t:Updates>
            <t:SetFolderField>
              <t:FieldURI FieldURI="folder:PermissionSet" />
              <t:Folder>
                <t:PermissionSet>
                  <t:Permissions>
                    <t:Permission>
                      <t:UserId>
                        <t:DistinguishedUser>Default</t:DistinguishedUser>
                      </t:UserId>
                      <t:PermissionLevel>None</t:PermissionLevel>
                    </t:Permission>
                    <t:Permission>
                      <t:UserId>
                        <t:DistinguishedUser>Anonymous</t:DistinguishedUser>
                      </t:UserId>
                      <t:PermissionLevel>None</t:PermissionLevel>
                    </t:Permission>
                  </t:Permissions>
                </t:PermissionSet>
              </t:Folder>
            </t:SetFolderField>
          </t:Updates>
        </t:FolderChange>
      </m:FolderChanges>
    </m:UpdateFolder>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die UpdateFolder-Anforderung mit einer UpdateFolderResponse-Nachricht , die den ResponseCode-ElementwertNoError enthält, der angibt, dass das Update erfolgreich war.

Aktualisieren von Ordnerberechtigungen mithilfe der verwalteten EWS-API

Sie können ordnerberechtigungen für einen bestimmten Ordner auch mithilfe der verwalteten EWS-API aktualisieren. So aktualisieren Sie die Berechtigungen:

  1. Entfernen Sie die Ordnerberechtigungen für die veralteten Berechtigungen, aber rufen Sie die Update-Methode (noch) nicht auf.

  2. Fügen Sie Ordnerberechtigungen für die neuen oder geänderten Benutzer hinzu.

  3. Rufen Sie die Update-Methode auf, um die Änderungen zu speichern.

Wenn Sie versuchen, zwei Berechtigungssätze für denselben Benutzer hinzuzufügen, erhalten Sie einen ServiceResponseException-Fehler mit der folgenden Beschreibung: "Der angegebene Berechtigungssatz enthält doppelte UserIds". Entfernen Sie in diesem Fall die aktuellen Berechtigungen aus der Permission-Auflistung , und fügen Sie dann die neuen Berechtigungen der Permission-Auflistung hinzu.

Aktualisieren von Ordnerberechtigungen mithilfe von EWS

Sie können Ordnerberechtigungen für bestimmte Ordner auch mithilfe von EWS aktualisieren, indem Sie den Vorgang zum Entfernen und Hinzufügen kombinieren. So aktualisieren Sie die Berechtigungen:

  1. Rufen Sie die aktuellen Berechtigungen des Ordners mithilfe des GetFolder-Vorgangs ab.

  2. Senden Sie mithilfe des Vorgangs UpdateFolder eine aktualisierte Liste von Berechtigungen.

Dies sind die beiden gleichen Vorgänge, die Sie verwenden, um den Zugriff mithilfe von EWS zu aktivieren oder zu entfernen . Der einzige Unterschied besteht darin, dass beim Empfangen der GetFolder-Antwort ein Berechtigungssatz für den Benutzer enthalten ist. Ersetzen Sie einfach dieses vorhandene Permission-Element durch das neue Permission-Element , und senden Sie dann den UpdateFolder-Vorgang durch den oder die neuen Permission-Werte .

Wenn Sie versuchen, zwei Berechtigungssätze für denselben Benutzer hinzuzufügen, erhalten Sie den ResponseCode-WertErrorDuplicateUserIdsSpecified. Entfernen Sie in diesem Fall den veralteten Berechtigungswert für den Benutzer aus der Anforderung, und wiederholen Sie dann die Anforderung.

Nächste Schritte

Nachdem Sie einem Benutzer die Berechtigung für einen bestimmten Ordner erteilt haben, kann der Benutzer als Stellvertretung auf den Ordner zugreifen. Weitere Informationen finden Sie unter:

Siehe auch