Bagikan melalui


Token Pembantu untuk Pekerjaan Transfer BITS

Di Windows Vista, layanan Background Intelligent Transfer Service (BITS) memungkinkan aplikasi untuk mengaitkan satu token keamanan ke pekerjaan transfer BITS. Pekerjaan transfer BITS kemudian menggunakan token ini untuk autentikasi dan untuk akses ke sumber daya lokal dan jarak jauh.

Di Windows 7, layanan BITS mengaitkan token tambahan ke pekerjaan transfer BITS. Pekerjaan transfer BITS dapat dikonfigurasi dengan token keamanan tambahan, yang merupakan token peniruan yang dibuat oleh aplikasi yang memanggil BITS COM API. Model token pembantu ini memungkinkan aplikasi untuk secara bersamaan menggunakan dua token keamanan yang berbeda untuk mengakses file lokal, sertifikat sisi klien, file jarak jauh, dan proksi. Misalnya, pekerjaan transfer BITS dibuat yang menulis data yang diunduh ke direktori lokal istimewa, lalu menyajikan identitas domain hak rendah ke server HTTP dan server proksi.

Aplikasi, biasanya layanan Windows, menentukan token pembantu dengan menggunakan antarmuka baru IBitsTokenOptions. Antarmuka ini diimplementasikan oleh objek pekerjaan BITS. Aplikasi memanggil IBackgroundCopyJob::QueryInterface untuk mendapatkan penunjuk antarmuka. Aplikasi ini meniru identitas pembantu dan memanggil IBitsTokenOptions::SetHelperToken untuk meneruskan token ke layanan BITS. Kemudian aplikasi menentukan sumber daya yang diterapkan token dengan meneruskan serangkaian bendera bit menggunakan IBitsTokenOptions::SetHelperTokenFlags. Aplikasi menghapus semua bendera (menggunakan SetHelperTokenFlags lagi) untuk mengembalikan perilaku. Layanan BITS menyimpan bendera bit dan token dalam pekerjaan transfer BITS.

Ketika pemilik pekerjaan transfer BITS keluar, layanan BITS membuang token pembantu yang terkait dengan pekerjaan transfer. Jika transfer tidak selesai, layanan BITS menempatkan pekerjaan dalam status kesalahan dengan kode kesalahan BG_E_TOKEN_REQUIRED dan membuang token pembantu. Aplikasi klien dapat menyegarkan token dengan memanggil IBitsTokenOptions::SetHelperToken dan kemudian dapat melanjutkan pekerjaan transfer BITS. Atau, aplikasi klien dapat menghapus bendera token pembantu menggunakan IBitsTokenOptions::SetHelperTokenFlags dan kemudian melanjutkan pekerjaan transfer tanpa token pembantu.

Demikian pula, ketika pemilik sesi layanan terminal keluar, layanan BITS harus membuang token pembantu dari sesi tersebut dan menempatkan pekerjaan transfer yang terpengaruh dalam status kesalahan dengan kode kesalahan BG_E_TOKEN_REQUIRED .

Model token pembantu memerlukan perubahan pada kebijakan kontrol akses BITS. Versi BITS sebelumnya menerapkan pemeriksaan akses pada setiap panggilan metode. Dimulai dengan Windows 7, pemeriksaan akses harus dilakukan di dalam panggilan IBackgroundCopyJob::QueryInterface ; jika tidak, token pembantu mungkin tidak memiliki akses ke pekerjaan transfer.

Catatan

Implementasi yang lebih lama secara efektif mengharuskan pengguna BITS memiliki hak istimewa administrator untuk mengatur token pembantu. Dimulai dengan Windows 10, versi 1607, pengguna BITS non-administrator dapat menggunakan IBitsTokenOptions::SetHelperToken untuk mengatur token pembantu non-administrator pada pekerjaan BITS yang mereka miliki. Perubahan ini memungkinkan pengguna BITS non-administrator (seperti layanan pengunduh latar belakang yang berjalan di bawah akun NetworkService) untuk mengatur token pembantu.

Secara khusus, implementasi telah diubah untuk memungkinkan pengguna tanpa hak istimewa administrator untuk mengatur token pembantu, selama kondisi berikut terpenuhi:

 

IBitsTokenOptions