Kimlik doğrulaması (BITS)
BITS, Temel kimlik doğrulama, Passport kimlik doğrulaması ve çeşitli sınama/yanıt kimlik doğrulaması düzenlerini destekler. Sunucu veya proxy kullanıcı kimlik doğrulaması gerektiriyorsa, kullanıcının kimlik bilgilerini belirtmek için IBackgroundCopyJob2::SetCredentials işlevini kullanın. BITS, kimlik bilgilerini korumak için CryptoAPI kullanır.
Temel kimlik doğrulaması kimlik bilgilerini ayarlamak için SetCredentials işlevini kullanarak kullanıcı adını ve parolayı belirtin. Temel kimlik doğrulamayı yalnızca korumalı https:// güvenli web siteleri ile kullanmanız gerekir; aksi takdirde kullanıcı adı ve parola kullanıcılar tarafından görülebilir.
Kullanıcı adını ve parolayı URL'ye eklemek mümkündür. Bu iyi bir güvenlik uygulaması olarak kabul edilmez ve RFC 3986'da (bölüm 3.2.1) kullanım dışıdır.
Passport kimlik doğrulaması için BITS, hesaba bağlı örtük kimlik bilgilerini değil yalnızca açık kimlik bilgilerini destekler.
Sınama/yanıt kimlik doğrulaması için, BITS kullanıcının kimliğine bürüner ve NTLM veya Kerberos protokolü gibi hangi sınama/yanıt kimlik doğrulamasının kullanılacağını belirlemek için Snego kullanır. BITS'in desteklediği sınama/yanıt düzenlerinin listesi için bkz. BG_AUTH_SCHEME.
Sunucudaki sanal dizinde anonim kimlik doğrulaması ve başka bir kimlik doğrulama şeması etkinleştirilmişse ve ACL'ler sanal dizini koruyorsa veya dosyaları indiriyorsa BITS işleri başarısız olabilir. Örneğin, sanal dizinde anonim ve tümleşik kimlik doğrulaması etkinleştirildiyse ve dosyada yalnızca Ben'in dosyayı okumasına izin veren bir ACL varsa bir iş "erişim reddedildi" hatasıyla başarısız olur. Bunun nedeni sanal dizinin anonim erişime izin vermesidir, bu nedenle IIS açıkça Ben'in kimliğini doğrulamaz (Ben'in kimlik bilgileri dosyaya erişmek için kullanılmaz ve erişim reddedilir).
Örtük kimlik bilgilerini kullanma
NTLM veya Kerberos kimlik doğrulaması için kullanıcının örtük (oturum açma) kimlik bilgilerini kullanmak için IBackgroundCopyJob2::SetCredentials yöntemini çağırın ve UserName ve PasswordBG_BASIC_CREDENTIALS yapısının üyelerini NULL olarak ayarlayın. Bir ara sunucu için örtük kimlik bilgileri belirtirseniz, açık sunucu kimlik bilgilerini belirtmediğiniz sürece BITS, sunucu kimlik doğrulaması için örtük kimlik bilgilerini de kullanır.
Hizmetler hakkında ek bilgi için bkz. Hizmet Hesapları ve BITS.
Ayrıca LMCompatibilityLevel değiştirebilir veya UseLMCompat kayıt defteri değerini; ancak, bu değerleri yalnızca SetCredentials yöntemini çağıracak şekilde değiştirilemeyen mevcut bir uygulamanız varsa değiştirmeniz gerekir.
LMCompatibilityLevel kayıt defteri değeri iki veya daha büyükse ve SetCredentials yöntemini çağırmadıysanız, BITS kimlik doğrulaması için örtük kimlik bilgilerini kullanır. LMCompatibilityLevel kayıt defteri değerinin tam yolu, System\CurrentControlSet\Control\LSA\LmCompatibilityLevelHKEY_LOCAL_MACHINE\.
LMCompatibilityLevel kayıt defteri değerinin değiştirilmesinin bilgisayarda çalışan diğer uygulamaları ve hizmetleri etkileyebileceğini unutmayın.
LMCompatibilityLevel kayıt defteri değerini ayarlamak sorun oluşturuyorsa, microsoft \Windows\CurrentVersion\BITSaltında HKEY_LOCAL_MACHINE\Software\altında UseLMCompat kayıt defteri değerini oluşturabilirsiniz. Kayıt defteri değeri bir DWORD'dür. Aşağıdaki tabloda, UseLMCompatiçin olası değerler listelenir:
Değer | Açıklama |
---|---|
0 | SUNUCU NTLM veya Kerberos kimlik bilgilerini her isterse BITS örtük kimlik bilgileri gönderir. |
1 | BITS, yalnızca istemci bilgisayarın LMCompatibilityLevel kayıt defteri değeri 2'den büyük veya buna eşitse örtük kimlik bilgileri gönderir. |
2 | BITS, yalnızca uygulamanın SetCredentials yöntemini çağırması durumunda örtük kimlik bilgileri gönderir. |
BitS, kayıt defteri değeri yoksa UseLMCompat kayıt defteri değeri için varsayılan "2" değerini kullanır.
İstemci/sunucu kimlik doğrulaması için sertifikaları kullanma
Güvenli istemci/sunucu iletişiminde, istemciler ve sunucular birbirlerinin kimliğini karşılıklı olarak doğrulamak için dijital sertifikalar kullanabilir. BITS, güvenli HTTP aktarımları için sertifika tabanlı sunucu kimlik doğrulamasını otomatik olarak destekler. BITS'ye karşılıklı kimlik doğrulaması için gereken istemci sertifikasını sağlamak için IBackgroundCopyJobHttpOptions::SetClientCertificateByID veya IBackgroundCopyJobHttpOptions::SetClientCertificateByName yöntemini çağırın.
Bir web sitesi SSL istemci sertifikası kabul ettiğinde ancak gerektirmediğinde ve BITS işi bir istemci sertifikası belirtmediğinde, iş ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED (0x80072f0c) ile başarısız olur.
Kullanıcıya özgü ayarlar gerektiren kimliği doğrulanmış ara sunucu senaryolarını işleme
BitS'yi, makinenin ağ etki alanında kullanılabilir NTLM veya Kerberos kimlik bilgileri olmayan bir hesap olarak çalışırken proxy kimlik doğrulaması gerektiren bir ortamda kullanıyorsanız, etki alanında kimlik bilgilerine sahip başka bir kullanıcı hesabının kimlik bilgilerini kullanarak düzgün kimlik doğrulaması yapmak için ek adımlar uygulamanız gerekir. Bu, BITS kodunuz LocalService, NetworkService veya LocalSystem gibi bir sistem hizmeti olarak çalıştığında, bu hesapların kullanılabilir NTLM veya Kerberos kimlik bilgileri olmadığından tipik bir senaryodur.
BitS'te kullanılan proxy algılama mantığı, ağ yardımcı belirteci (BG_TOKEN_NETWORK) ayarlandığında aşağıdakileri yapar:
- IBackgroundCopyJob::SetProxySettingsBG_JOB_PROXY_USAGE_PRECONFIGile çağrıldıysa, WinHttpGetIEProxyConfigForCurrentUseraracılığıyla iş sahibi belirteci bağlamı kimliğe bürünme kullanarak yerel IE proxy ayarlarını okuyun. Windows 10, sürüm 1809'dan (10.0; Derleme 17763), bu adım için yardımcı belirteç kimliği kullanılır.
- IBackgroundCopyJob::SetProxySettingsBG_PROXY_USAGE_AUTODETECT ile çağrıldıysa veya BG_JOB_PROXY_USAGE_PRECONFIG durumdaki IE ayarları otomatik algılama veya otomatik yapılandırma URL'si belirtiyorsa, winhttpgetproxyForUrl aracılığıyla yardımcı belirteç kimliğe bürünme kullanarak otomatik ara sunucu algılama veya Web Proxy Otomatik Bulma Protokolü (WPAD) gerçekleştirin.
Bundan sonra, proxy veya sunucu kimlik doğrulaması için tüm bu süre boyunca yardımcı belirteci kimliğe bürünme kullanılır.
Windows 10, sürüm 1809'dan (10.0; Derleme 17763), kullanıcıya özgü kimlik bilgileriyle kimliği doğrulanmış ara sunucu senaryosu basitleştirilmiştir.
- BG_AUTH_SCHEME_NEGOTIATE, UserNameNULLolarak ayarlanmış, PasswordNULLolarak ayarlanmış SetCredentials yöntemini çağırın ve hedef BG_AUTH_TARGET_PROXYolarak. Bu, kullanıcı hesabının örtük kimlik bilgilerinin proxy ve sunucu ile NTLM ve Kerberos kimlik doğrulaması için kullanılmasına neden olur.
- BG_JOB_PROXY_USAGE_PRECONFIGile IBackgroundCopyJob::SetProxySettings çağrısı.
- IBitsTokenOptionsiçin QueryInterface.
- NTLM/Kerberos kimlik bilgileri için kullandığınız kullanıcı hesabının kimliğine bürünün.
- SetHelperTokenöğesini arayın.
- BG_TOKEN_NETWORKile SetHelperTokenFlagsçağır.
- Kimliğe bürünme özelliğini geri alma.
- İş kurulumuna devam edin.
- İş Özgeçmiş arayın.
Windows 10,sürüm 1809'un (10.0; Derleme 17763), ağ tabanlı proxy algılama (WPAD) ve proxy kimlik doğrulaması için doğru kullanıcı kimliği (yardımcı belirtecin kimliği) kullanılır, ancak yerel (IE) proxy ayarlarının gerçek algılanması her zaman iş sahibinin belirteci kullanılarak yapılır( yardımcı belirteç yapılandırıldığında bile). Bu eksiklikleri geçici olarak çözmek için bu adımları izleyebilirsiniz.
- NTLM/Kerberos kimlik bilgileri için kullandığınız kullanıcı hesabının kimliğine bürünün.
- WinHttpGetIEProxyConfigForCurrentUserçağırarak kullanıcı hesabının IE proxy ayarlarını alın.
- Kimliğe bürünme özelliğini geri alma.
- BG_AUTH_SCHEME_NEGOTIATE, UserNameNULLolarak ayarlanmış, PasswordNULLolarak ayarlanmış SetCredentials yöntemini çağırın ve hedef BG_AUTH_TARGET_PROXYolarak. Bu, kullanıcı hesabının örtük kimlik bilgilerinin proxy ve sunucu ile NTLM ve Kerberos kimlik doğrulaması için kullanılmasına neden olur.
- 2. adım kullanıcıya özgü ara sunucu ayarları (lpszProxy veya lpszProxyBypass null )değilse, BG_JOB_PROXY_USAGE_OVERRIDE ayarıyla SetProxySettings kullanarak ilgili iş ayarlarını el ile ayarlayın.
- 2. adım kullanıcıya özgü proxy ayarları sağlamadıysa, BG_JOB_USAGE_PRECONFIGile SetProxySettingsçağrısı yapın.
- IBitsTokenOptionsiçin QueryInterface.
- Kullanıcı hesabının kimliğine yeniden bürün.
- SetHelperTokenöğesini arayın.
- BG_TOKEN_NETWORKile SetHelperTokenFlagsçağır.
- Kimliğe bürünme özelliğini geri alma.
- İş kurulumuna devam edin.
- İş Özgeçmiş arayın.