Hilfstoken für BITS-Übertragungsaufträge

In Windows Vista ermöglicht der BITS-Dienst (Background Intelligent Transfer Service) einer Anwendung das Zuordnen eines einzelnen Sicherheitstokens zu einem BITS-Übertragungsauftrag. Der BITS-Übertragungsauftrag verwendet dieses Token dann für die Authentifizierung und für den Zugriff auf lokale und Remoteressourcen.

In Windows 7 ordnet der BITS-Dienst einem BITS-Übertragungsauftrag ein zusätzliches Token zu. Der BITS-Übertragungsauftrag kann mit einem zusätzlichen Sicherheitstoken konfiguriert werden, bei dem es sich um ein Identitätswechseltoken handelt, das von einer Anwendung erstellt wird, die die BITS COM-API aufruft. Dieses Hilfstokenmodell ermöglicht es Anwendungen, gleichzeitig zwei verschiedene Sicherheitstoken für den Zugriff auf lokale Dateien, clientseitige Zertifikate, Remotedateien und Proxys zu verwenden. Beispielsweise wird ein BITS-Übertragungsauftrag erstellt, der die heruntergeladenen Daten in ein privilegiertes lokales Verzeichnis schreibt und dann eine Domänenidentität mit niedrigen Rechten auf den HTTP- und Proxyserver darstellt.

Eine Anwendung, in der Regel ein Windows-Dienst, gibt mithilfe der neuen Schnittstelle IBitsTokenOptions ein Hilfstoken an. Diese Schnittstelle wird vom BITS-Auftragsobjekt implementiert. Die Anwendung ruft IBackgroundCopyJob::QueryInterface auf, um den Schnittstellenzeiger abzurufen. Die Anwendung gibt die Identität der Hilfsprogrammidentität an und ruft IBitsTokenOptions::SetHelperToken auf, um das Token an den BITS-Dienst zu übergeben. Anschließend gibt die Anwendung die Ressourcen an, auf die das Token angewendet wird, indem eine Reihe von Bitflags mit IBitsTokenOptions::SetHelperTokenFlags übergeben wird. Die Anwendung löscht alle Flags (erneut mithilfe von SetHelperTokenFlags), um das Verhalten zu rückgängig machen. Der BITS-Dienst speichert die Bitflags und das Token im BITS-Übertragungsauftrag.

Wenn sich der Besitzer der BITS-Übertragungsaufträge abmeldet, verwirft der BITS-Dienst alle Hilfstoken, die dem Übertragungsauftrag zugeordnet sind. Wenn die Übertragung nicht abgeschlossen ist, versetzt der BITS-Dienst den Auftrag in einen Fehlerzustand mit dem BG_E_TOKEN_REQUIRED Fehlercode und verwirft das Hilfstoken. Die Clientanwendung kann das Token aktualisieren, indem sie IBitsTokenOptions::SetHelperToken aufruft und dann den BITS-Übertragungsauftrag fortsetzen kann. Alternativ kann die Clientanwendung die Hilfstokenflags mithilfe von IBitsTokenOptions::SetHelperTokenFlags löschen und dann den Übertragungsauftrag ohne Hilfstoken fortsetzen.

Wenn sich der Besitzer einer Terminaldienstesitzung abmeldet, muss der BITS-Dienst alle Hilfstoken aus dieser Sitzung verwerfen und die betroffenen Übertragungsaufträge in einen Fehlerzustand mit dem BG_E_TOKEN_REQUIRED Fehlercode versetzen.

Das Hilfstokenmodell erfordert eine Änderung der BITS-Zugriffssteuerungsrichtlinie. In früheren Versionen von BITS wurden Zugriffsprüfungen für jeden Methodenaufruf implementiert. Ab Windows 7 muss die Zugriffsüberprüfung innerhalb des IBackgroundCopyJob::QueryInterface-Aufrufs durchgeführt werden. Andernfalls hat das Hilfstoken möglicherweise keinen Zugriff auf den Übertragungsauftrag.

Hinweis

Ältere Implementierungen erforderten effektiv, dass BITS-Benutzer über Administratorrechte verfügen, um Hilfstoken festzulegen. Ab Windows 10 Version 1607 können BITS-Benutzer, die nicht administrator sind, IBitsTokenOptions::SetHelperToken verwenden, um Nicht-Administratorhilfstoken für BITS-Aufträge festzulegen, die sie besitzen. Durch diese Änderung können BITS-Benutzer ohne Administratorrechte (z. B. Hintergrund-Downloaderdienste, die unter dem NetworkService-Konto ausgeführt werden) Hilfstoken festlegen.

Insbesondere wurde die Implementierung geändert, damit Benutzer ohne Administratorberechtigungen Hilfstoken festlegen können, solange die folgenden Bedingungen erfüllt sind:

 

IBitsTokenOptions