Delen via


Helpertokens voor BITS-overdrachtstaken

In Windows Vista kan een toepassing met de BITS-service (Background Intelligent Transfer Service) één beveiligingstoken koppelen aan een BITS-overdrachtstaak. De BITS-overdrachtstaak gebruikt dit token vervolgens voor verificatie en voor toegang tot lokale en externe resources.

In Windows 7 koppelt de BITS-service een extra token aan een BITS-overdrachtstaak. De BITS-overdrachtstaak kan worden geconfigureerd met een extra beveiligingstoken. Dit is een imitatietoken dat is gemaakt door een toepassing die de BITS COM-API aanroept. Met dit helpertokenmodel kunnen toepassingen tegelijkertijd twee verschillende beveiligingstokens gebruiken voor toegang tot lokale bestanden, certificaten aan de clientzijde, externe bestanden en proxy's. Er wordt bijvoorbeeld een BITS-overdrachtstaak gemaakt die de gedownloade gegevens naar een bevoegde lokale map schrijft en vervolgens een domeinidentiteit met lage rechten presenteert aan de HTTP-server en proxyserver.

Een toepassing, meestal een Windows-service, geeft een helper-token op met behulp van de nieuwe interface IBitsTokenOptions. Deze interface wordt geïmplementeerd door het BITS-taakobject. De toepassing roept IBackgroundCopyJob::QueryInterface aan om de interfaceaanwijzer op te halen. De toepassing imiteert de helper-identiteit en roept IBitsTokenOptions::SetHelperToken het token door te geven aan de BITS-service. Vervolgens geeft de toepassing de resources op waarop het token van toepassing is door een set bitvlagken door te geven met behulp van IBitsTokenOptions::SetHelperTokenFlags. De toepassing wist alle vlaggen (met behulp van SetHelperTokenFlags) om het gedrag te herstellen. De BITS-service slaat de bitvlagken en het token op in de BITS-overdrachtstaak.

Wanneer de eigenaar van de BITS-overdrachtstaken is uitgeschakeld, verwijdert de BITS-service alle helpertokens die zijn gekoppeld aan de overdrachtstaak. Als de overdracht niet is voltooid, plaatst de BITS-service de taak in een foutstatus met de BG_E_TOKEN_REQUIRED foutcode en wordt het helpertoken verwijderd. De clienttoepassing kan het token vernieuwen door IBitsTokenOptions::SetHelperToken aan te roepen en vervolgens de BITS-overdrachtstaak te hervatten. De clienttoepassing kan ook de helper-tokenvlagken wissen met behulp van IBitsTokenOptions::SetHelperTokenFlags en vervolgens de overdrachtstaak hervatten zonder een helpertoken.

Op dezelfde manier moet de BITS-service, wanneer de eigenaar van een Terminal Services-sessie zich afmeldt, alle helpertokens van die sessie negeren en de betrokken overdrachtstaken in een foutstatus plaatsen met de foutcode BG_E_TOKEN_REQUIRED.

Voor het helper-tokenmodel is een wijziging in het BITS-toegangsbeheerbeleid vereist. In eerdere versies van BITS zijn toegangscontroles geïmplementeerd voor elke methode-aanroep. Vanaf Windows 7 moet de toegangscontrole worden uitgevoerd in de IBackgroundCopyJob::QueryInterface aanroep; anders heeft het helpertoken mogelijk geen toegang tot de overdrachtstaak.

Notitie

Oudere implementaties vereist effectief dat BITS-gebruikers beheerdersbevoegdheden hebben om helpertokens in te stellen. Vanaf Windows 10 versie 1607 kunnen niet-beheerders BITS-gebruikers IBitsTokenOptions::SetHelperToken instellen voor niet-beheerdershelpertokens voor BITS-taken die ze bezitten. Met deze wijziging kunnen niet-beheerders BITS-gebruikers (zoals achtergronddownloaderservices die worden uitgevoerd onder het NetworkService-account) helpertokens instellen.

De implementatie is gewijzigd zodat gebruikers zonder beheerdersbevoegdheden helpertokens kunnen instellen, zolang aan de volgende voorwaarden wordt voldaan:

 

IBitsTokenOptions-