Freigeben über


Sicherheitskontexte und Active Directory Domain Services

Wenn eine Anwendung an einen Active Directory-Domäne Controller (DC) bindet, erfolgt dies im Sicherheitskontext eines Sicherheitsprinzipals, bei dem es sich um einen Benutzer oder eine Entität wie einen Computer oder einen Systemdienst handeln kann. Der Sicherheitskontext ist das Benutzerkonto, das das System verwendet, um die Sicherheit zu erzwingen, wenn ein Thread versucht, auf ein sicherungsfähiges Objekt zuzugreifen. Diese Daten umfassen die Benutzersicherheits-ID (SID), Gruppenmitgliedschaften und Berechtigungen.

Ein Benutzer erstellt einen Sicherheitskontext, indem Anmeldeinformationen für die Authentifizierung angezeigt werden. Wenn die Anmeldeinformationen authentifiziert sind, erstellt das System ein Zugriffstoken, das die Gruppenmitgliedschaften und Berechtigungen identifiziert, die dem Benutzerkonto zugeordnet sind. Das System überprüft Ihr Zugriffstoken, wenn Sie versuchen, auf ein Verzeichnisobjekt zuzugreifen. Sie vergleicht die Daten in Ihrem Zugriffstoken mit den Konten und Gruppen, denen der Zugriff vom Objektsicherheitsdeskriptor gewährt oder verweigert wurde.

Verwenden Sie die folgenden Methoden, um den Sicherheitskontext zu steuern, mit dem Sie an einen Active Directory-DC binden:

  • Binden Sie mithilfe der Option ADS_SECURE_AUTHENTICATION mit der Funktion ADsOpenObject oder der IADsOpenDSObject::OpenDSObject-Methode , und geben Sie explizit einen Benutzernamen und ein Kennwort an. Das System authentifiziert diese Anmeldeinformationen und generiert ein Zugriffstoken, das es für die Zugriffsüberprüfung für die Dauer dieser Bindung verwendet. Weitere Informationen finden Sie unter Authentifizierung.
  • Binden Sie mit der Option ADS_SECURE_AUTHENTICATION , aber ohne Angabe von Anmeldeinformationen. Wenn Sie keine Identität eines Benutzers annehmen, verwendet das System den primären Sicherheitskontext Ihrer Anwendung, d. h. den Sicherheitskontext des Benutzers, der Ihre Anwendung gestartet hat. Im Fall eines Systemdiensts ist dies der Sicherheitskontext des Dienstkontos oder des LocalSystem-Kontos.
  • Identität eines Benutzers annehmen und dann an ADS_SECURE_AUTHENTICATION binden, ohne Anmeldeinformationen anzugeben. In diesem Fall verwendet das System den Sicherheitskontext des Clients, der identitätswechselt wird. Weitere Informationen finden Sie unter Clientidentitätswechsel.
  • Binden Sie mit ADsOpenObject oder IADsOpenDSObject::OpenDSObject mit der Option ADS_NO_AUTHENTICATION . Diese Methode bindet ohne Authentifizierung und führt zu "Jeder" als Sicherheitskontext. Nur der LDAP-Anbieter unterstützt diese Option.

Binden Sie nach Möglichkeit ohne Angabe von Anmeldeinformationen. Verwenden Sie also den Sicherheitskontext des angemeldeten Benutzers oder des identitätswechselten Clients. Dadurch können Sie das Zwischenspeichern von Anmeldeinformationen vermeiden. Wenn Sie alternative Benutzeranmeldeinformationen verwenden müssen, fordern Sie die Anmeldeinformationen an, binden Sie sie an sie, aber nicht zwischenspeichern. Um denselben Sicherheitskontext in mehreren Bindungsvorgängen zu verwenden, können Sie den Benutzernamen und das Kennwort für den ersten Bindungsvorgang angeben und dann nur den Benutzernamen angeben, um nachfolgende Bindungen zu erstellen. Weitere Informationen zur Verwendung dieses Verfahrens finden Sie unter Authentifizierung.

Einige Sicherheitskontexte sind leistungsstärker als andere. Beispielsweise hat das LocalSystem-Konto auf einem Domänencontroller vollständigen Zugriff auf Active Directory Domain Services, während ein typischer Benutzer nur eingeschränkten Zugriff auf einige objekte im Verzeichnis hat. Im Allgemeinen sollte Ihre Anwendung nicht in einem leistungsstarken Sicherheitskontext wie LocalSystem ausgeführt werden, wenn ein weniger leistungsstarker Sicherheitskontext ausreicht, um die Vorgänge auszuführen. Dies bedeutet, dass Sie Ihre Anwendung möglicherweise in separate Komponenten unterteilen möchten, die jeweils in einem Sicherheitskontext ausgeführt werden, der den auszuführenden Vorgängen entspricht. Ihr Anwendungssetup kann z. B. wie folgt unterteilt werden:

  • Führen Sie Schemaänderungen und -erweiterungen im Kontext eines Benutzers aus, der Mitglied der Gruppe Schemaadministratoren ist.
  • Führen Sie Konfigurationscontaineränderungen im Kontext eines Benutzers aus, der Mitglied der Gruppe Unternehmensadministratoren ist.
  • Führen Sie Domänencontaineränderungen im Kontext eines Benutzers aus, der Mitglied der Gruppe Domänenadministratoren ist.