Dela via


Autentisering (BITS)

BITS stöder grundläggande autentisering, Passport-autentisering och flera autentiseringsscheman för utmaning/svar. Om servern eller proxyn kräver användarautentisering använder du funktionen IBackgroundCopyJob2::SetCredentials för att ange användarens autentiseringsuppgifter. BITS använder CryptoAPI- för att skydda autentiseringsuppgifterna.

Om du vill ange autentiseringsuppgifter för Grundläggande autentisering använder du funktionen SetCredentials för att ange användarnamn och lösenord. Du bör endast använda grundläggande autentisering med https:// skyddade säkra webbplatser. annars visas användarnamnet och lösenordet för användarna.

Det går att bädda in användarnamnet och lösenordet i URL:en. Detta anses inte vara en god säkerhetspraxis och är inaktuell i RFC 3986 (avsnitt 3.2.1).

För Passport- autentisering stöder BITS endast explicita autentiseringsuppgifter, inte implicita autentiseringsuppgifter som är kopplade till kontot.

För utmanings-/svarsautentisering personifierar BITS användaren och använder Snego för att avgöra vilken utmaning/svar-autentisering som ska användas, till exempel NTLM eller Kerberos-protokollet. En lista över utmanings-/svarsscheman som BITS stöder finns i BG_AUTH_SCHEME.

BITS-jobb kan misslyckas om den virtuella katalogen på servern har anonym autentisering och ett annat autentiseringsschema aktiverat och om ACL:er skyddar den virtuella katalogen eller laddar ned filer. Ett jobb misslyckas till exempel med "åtkomst nekad" om den virtuella katalogen har anonym och integrerad autentisering aktiverad och filen innehåller en ACL som endast tillåter Att Ben läser filen. Detta beror på att den virtuella katalogen tillåter anonym åtkomst, så IIS autentiserar inte Uttryckligen Ben (Bens autentiseringsuppgifter används inte för att komma åt filen och åtkomst nekas).

Använda implicita autentiseringsuppgifter

Om du vill använda användarens implicita autentiseringsuppgifter (inloggning) för NTLM- eller Kerberos-autentisering anropar du metoden IBackgroundCopyJob2::SetCredentials och anger metoden UserName och Password medlemmar i BG_BASIC_CREDENTIALS-strukturen till NULL-. Om du anger implicita autentiseringsuppgifter för en proxy använder BITS även implicita autentiseringsuppgifter för serverautentisering om du inte anger explicita serverautentiseringsuppgifter.

Mer information om tjänster finns i Tjänstkonton och BITS-.

Du kan också ändra registervärdet LMCompatibilityLevel eller UseLMCompat. Du bör dock bara ändra dessa värden om du har ett befintligt program som inte kan ändras för att anropa metoden SetCredentials.

BITS använder implicita autentiseringsuppgifter för autentisering om LMCompatibilityLevel registervärde är två eller större och du inte har anropat metoden SetCredentials. Den fullständiga sökvägen till registervärdet LMCompatibilityLevel är HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LmCompatibilityLevel.

Observera att ändring av LMCompatibilityLevel registervärde kan påverka andra program och tjänster som körs på datorn.

Om det är ett problem att ange registervärdet LMCompatibilityLevel kan du skapa registervärdet UseLMCompat under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\BITS. Registervärdet är ett DWORD. I följande tabell visas möjliga värden för UseLMCompat:

Värde Beskrivning
0 BITS skickar implicita autentiseringsuppgifter när servern frågar efter NTLM- eller Kerberos-autentiseringsuppgifter.
1 BITS skickar endast implicita autentiseringsuppgifter om klientdatorns LMCompatibilityLevel registervärdet är större än eller lika med 2.
2 BITS skickar endast implicita autentiseringsuppgifter om programmet kallas SetCredentials-metoden.

BITS använder standardvärdet "2" för UseLMCompat registervärde om registervärdet inte finns.

Använda certifikat för klient-/serverautentisering

I säker klient-/serverkommunikation kan klienter och servrar använda digitala certifikat för att ömsesidigt autentisera varandra. BITS stöder automatiskt certifikatbaserad serverautentisering för säkra HTTP-transporter. Om du vill ge BITS det klientcertifikat som behövs för ömsesidig autentisering anropar du antingen IBackgroundCopyJobHttpOptions::SetClientCertificateByID eller IBackgroundCopyJobHttpOptions::SetClientCertificateByName-metoden.

När en webbplats accepterar men inte kräver något SSL-klientcertifikat och BITS-jobbet inte anger något klientcertifikat misslyckas jobbet med ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED (0x80072f0c).

Hantera autentiserade proxyscenarier som kräver användarspecifika inställningar

Om du använder BITS i en miljö som kräver proxyautentisering när du kör som ett konto utan användbara NTLM- eller Kerberos-autentiseringsuppgifter i datorns nätverksdomän, måste du vidta extra åtgärder för att autentisera korrekt med hjälp av autentiseringsuppgifterna för ett annat användarkonto som har autentiseringsuppgifter på domänen. Det här är ett typiskt scenario när BITS-koden körs som en systemtjänst, till exempel LocalService, NetworkService eller LocalSystem, eftersom dessa konton inte har användbara NTLM- eller Kerberos-autentiseringsuppgifter.

Proxyidentifieringslogiken som används i BITS gör följande när en nätverkshjälptoken (BG_TOKEN_NETWORK) har angetts:

  • Om IBackgroundCopyJob::SetProxySettings anropades med BG_JOB_PROXY_USAGE_PRECONFIGläser du lokala IE-proxyinställningar med kontextpersonifiering av jobbägaretoken via WinHttpGetIEProxyConfigForCurrentUser. Från och med Windows 10 version 1809 (10.0; Build 17763), hjälptokenidentiteten används för det här steget.
  • Om IBackgroundCopyJob::SetProxySettings anropades med BG_PROXY_USAGE_AUTODETECT eller om IE-inställningarna från det BG_JOB_PROXY_USAGE_PRECONFIG fallet anger automatisk identifiering eller en url för automatisk konfiguration, utför du automatisk proxyidentifiering eller WPAD (Web Proxy Autodiscovery Protocol) med hjälp av personifiering av hjälptoken via WinHttpGetProxyForUrl.

Därefter används personifiering av hjälptoken för proxy- eller serverautentisering i hela.

Från och med Windows 10 version 1809 (10.0; Build 17763), det autentiserade proxyscenariot med användarspecifika autentiseringsuppgifter förenklas.

  1. Anropa BITS-jobbets SetCredentials-metod med BG_AUTH_SCHEME_NEGOTIATE, UserName inställt på NULL, Password inställt på NULLoch Target inställt på BG_AUTH_TARGET_PROXY. Detta gör att användarkontots implicita autentiseringsuppgifter används för NTLM- och Kerberos-autentisering med proxyn och servern.
  2. Anropa IBackgroundCopyJob::SetProxySettings med BG_JOB_PROXY_USAGE_PRECONFIG.
  3. QueryInterface för IBitsTokenOptions.
  4. Personifiera det användarkonto som du använder för NTLM/Kerberos-autentiseringsuppgifter.
  5. Anropa SetHelperToken.
  6. Anropa SetHelperTokenFlags med BG_TOKEN_NETWORK.
  7. Återställ personifiering.
  8. Fortsätt med jobbkonfigurationen.
  9. Anropa Återuppta på jobbet.

Före Windows 10 version 1809 (10.0; Build 17763), rätt användaridentitet (hjälptokens identitet) används för nätverksbaserad proxyidentifiering (WPAD) och för proxyautentisering, men den faktiska identifieringen av lokala proxyinställningar (IE) görs alltid med hjälp av jobbägarens token, även när en hjälptoken har konfigurerats. Du kan undvika den här bristen genom att följa de här stegen.

  1. Personifiera det användarkonto som du använder för NTLM/Kerberos-autentiseringsuppgifter.
  2. Hämta användarkontots IE-proxyinställningar genom att anropa WinHttpGetIEProxyConfigForCurrentUser.
  3. Återställ personifiering.
  4. Anropa BITS-jobbets SetCredentials-metod med BG_AUTH_SCHEME_NEGOTIATE, UserName inställt på NULL, Password inställt på NULLoch Target inställt på BG_AUTH_TARGET_PROXY. Detta gör att användarkontots implicita autentiseringsuppgifter används för NTLM- och Kerberos-autentisering med proxyn och servern.
  5. Om steg 2 gav några användarspecifika proxyinställningar (dvs. lpszProxy eller lpszProxyBypass inte NULL), anger du motsvarande jobbinställningar manuellt med hjälp av SetProxySettings med inställningen BG_JOB_PROXY_USAGE_OVERRIDE.
  6. Om steg 2 inte gav några användarspecifika proxyinställningar anropar du SetProxySettings med BG_JOB_USAGE_PRECONFIG.
  7. QueryInterface för IBitsTokenOptions.
  8. Personifiera användarkontot igen.
  9. Anropa SetHelperToken.
  10. Anropa SetHelperTokenFlags med BG_TOKEN_NETWORK.
  11. Återställ personifiering.
  12. Fortsätt med jobbkonfigurationen.
  13. Anropa Återuppta på jobbet.