Share via


Token helper per i processi di trasferimento BITS

In Windows Vista, il servizio BITS (Background Intelligent Transfer Service) consente a un'applicazione di associare un singolo token di sicurezza a un processo di trasferimento BITS. Il processo di trasferimento BITS usa quindi questo token per l'autenticazione e per l'accesso alle risorse locali e remote.

In Windows 7 il servizio BITS associa un token aggiuntivo a un processo di trasferimento BITS. Il processo di trasferimento BITS può essere configurato con un token di sicurezza aggiuntivo, ovvero un token di rappresentazione creato da un'applicazione che chiama l'API COM BITS. Questo modello di token helper consente alle applicazioni di usare simultaneamente due token di sicurezza diversi per accedere a file locali, certificati lato client, file remoti e proxy. Ad esempio, viene creato un processo di trasferimento BITS che scrive i dati scaricati in una directory locale con privilegi e quindi presenta un'identità di dominio con diritti limitati nel server HTTP e nel server proxy.

Un'applicazione, in genere un servizio Windows, specifica un token helper usando la nuova interfaccia IBitsTokenOptions. Questa interfaccia viene implementata dall'oggetto processo BITS. L'applicazione chiama IBackgroundCopyJob::QueryInterface per ottenere il puntatore all'interfaccia. L'applicazione rappresenta l'identità helper e chiama IBitsTokenOptions::SetHelperToken per passare il token al servizio BITS. L'applicazione specifica quindi le risorse a cui viene applicato il token passando un set di flag di bit usando IBitsTokenOptions::SetHelperTokenFlags. L'applicazione cancella tutti i flag (usando di nuovo SetHelperTokenFlags ) per ripristinare il comportamento. Il servizio BITS archivia i flag di bit e il token nel processo di trasferimento BITS.

Quando il proprietario dei processi di trasferimento BITS si disconnette, il servizio BITS rimuove tutti i token helper associati al processo di trasferimento. Se il trasferimento non è completo, il servizio BITS inserisce il processo in uno stato di errore con il codice di errore BG_E_TOKEN_REQUIRED e rimuove il token helper. L'applicazione client può aggiornare il token chiamando IBitsTokenOptions::SetHelperToken e quindi può riprendere il processo di trasferimento BITS. In alternativa, l'applicazione client può cancellare i flag di token helper usando IBitsTokenOptions::SetHelperTokenFlags e quindi riprendere il processo di trasferimento senza un token helper.

Analogamente, quando il proprietario di una sessione di Servizi terminal si disconnette, il servizio BITS deve rimuovere tutti i token helper da tale sessione e inserire i processi di trasferimento interessati in uno stato di errore con il codice di errore BG_E_TOKEN_REQUIRED .

Il modello di token helper richiede una modifica ai criteri di controllo di accesso BITS. Le versioni precedenti di BITS hanno implementato i controlli di accesso per ogni chiamata al metodo. A partire da Windows 7, il controllo di accesso deve essere eseguito all'interno della chiamata IBackgroundCopyJob::QueryInterface . In caso contrario, il token helper potrebbe non avere accesso al processo di trasferimento.

Nota

Le implementazioni meno recenti richiedevano in modo efficace che gli utenti BITS abbiano privilegi di amministratore per impostare i token helper. A partire da Windows 10, versione 1607, gli utenti BITS non amministratori possono usare IBitsTokenOptions::SetHelperToken per impostare token helper non amministratore nei processi BITS di cui sono proprietari. Questa modifica consente agli utenti BITS non amministratori (ad esempio i servizi downloader in background in esecuzione nell'account NetworkService) di impostare i token helper.

In particolare, l'implementazione è stata modificata per consentire agli utenti senza privilegi di amministratore di impostare i token helper, purché vengano soddisfatte le condizioni seguenti:

 

IBitsTokenOptions