Delen via


Verificatie (BITS)

BITS ondersteunt basisverificatie, Passport-verificatie en verschillende challenge/response-verificatieschema's. Als voor de server of proxy gebruikersverificatie is vereist, gebruikt u de IBackgroundCopyJob2::SetCredentials functie om de referenties van de gebruiker op te geven. BITS gebruikt de CryptoAPI- om de referenties te beveiligen.

Als u referenties voor basisverificatie wilt instellen, gebruikt u de functie SetCredentials om de gebruikersnaam en het wachtwoord op te geven. Gebruik alleen basisverificatie met https:// beveiligde websites; anders zijn de gebruikersnaam en het wachtwoord zichtbaar voor gebruikers.

Het is mogelijk om de gebruikersnaam en het wachtwoord in de URL in te sluiten. Dit wordt niet beschouwd als een goede beveiligingspraktijk en wordt afgeschaft in RFC 3986 (sectie 3.2.1).

Voor Passport--verificatie ondersteunt BITS alleen expliciete referenties, niet impliciete referenties die aan het account zijn gekoppeld.

Bits imiteert de gebruiker voor uitdaging/antwoordverificatie en gebruikt Snego- om te bepalen welke vraag/antwoordverificatie moet worden gebruikt, zoals NTLM of het Kerberos-protocol. Zie BG_AUTH_SCHEMEvoor een lijst met uitdagings-/responsschema's die DOOR BITS worden ondersteund.

BITS-taken kunnen mislukken als de virtuele map op de server anonieme verificatie en een ander verificatieschema heeft ingeschakeld en als ACL's de virtuele map beveiligen of bestanden downloaden. Een taak mislukt bijvoorbeeld met 'toegang geweigerd' als de virtuele map anonieme en geïntegreerde verificatie heeft ingeschakeld en het bestand een ACL bevat waarmee alleen Ben het bestand kan lezen. Dit komt doordat de virtuele map anonieme toegang toestaat, zodat IIS niet expliciet Ben verifieert (Ben's referenties worden niet gebruikt voor toegang tot het bestand en de toegang wordt geweigerd).

Impliciete referenties gebruiken

Als u de impliciete aanmeldingsreferenties van de gebruiker wilt gebruiken voor NTLM- of Kerberos-verificatie, roept u de IBackgroundCopyJob2::SetCredentials methode aan en stelt u de UserName en Password leden van de BG_BASIC_CREDENTIALS-structuur in om NULL-te. Als u impliciete referenties voor een proxy opgeeft, gebruikt BITS ook de impliciete referenties voor serververificatie, tenzij u expliciete serverreferenties opgeeft.

Zie serviceaccounts en BITS-voor meer informatie over services.

U kunt ook de registerwaarde LMCompatibilityLevel of UseLMCompat wijzigen; U moet deze waarden echter alleen wijzigen als u een bestaande toepassing hebt die niet kan worden gewijzigd om de methode SetCredentials aan te roepen.

BITS gebruikt impliciete referenties voor verificatie als de LMCompatibilityLevel registerwaarde twee of hoger is en u de SetCredentials methode niet hebt aangeroepen. Het volledige pad naar de registerwaarde LMCompatibilityLevel is HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LmCompatibilityLevel.

Houd er rekening mee dat het wijzigen van de registerwaarde LMCompatibilityLevel van invloed kan zijn op andere toepassingen en services die op de computer worden uitgevoerd.

Als het instellen van de registerwaarde LMCompatibilityLevel een probleem is, kunt u de registerwaarde UseLMCompat maken onder HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\BITS. De registerwaarde is een DWORD. De volgende tabel bevat de mogelijke waarden voor UseLMCompat-:

Waarde Beschrijving
0 BITS verzendt impliciete referenties wanneer de server om NTLM- of Kerberos-referenties vraagt.
1 BITS verzendt alleen impliciete referenties als de registerwaarde van de clientcomputer LMCompatibilityLevel groter is dan of gelijk is aan 2.
2 BITS verzendt alleen impliciete referenties als de toepassing de SetCredentials methode aangeroepen.

BITS gebruikt een standaardwaarde van '2' voor de UseLMCompat registerwaarde als de registerwaarde niet bestaat.

Certificaten gebruiken voor client-/serververificatie

Bij beveiligde client-/servercommunicatie kunnen clients en servers digitale certificaten gebruiken om elkaar wederzijds te verifiëren. BITS ondersteunt automatisch serververificatie op basis van certificaten voor beveiligde HTTP-transporten. Als u BITS wilt opgeven dat nodig is voor wederzijdse verificatie, roept u de methode IBackgroundCopyJobHttpOptions::SetClientCertificateByID of methode IBackgroundCopyJobHttpOptions::SetClientCertificateByName aan.

Wanneer een website een SSL-clientcertificaat accepteert maar geen SSL-clientcertificaat vereist en de BITS-taak geen clientcertificaat opgeeft, mislukt de taak met ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED (0x80072f0c).

Geverifieerde proxyscenario's verwerken waarvoor gebruikersspecifieke instellingen zijn vereist

Als u BITS gebruikt in een omgeving waarvoor proxyverificatie is vereist terwijl deze wordt uitgevoerd als een account zonder bruikbare NTLM- of Kerberos-referenties in het netwerkdomein van de computer, moet u extra stappen uitvoeren om correct te verifiëren met behulp van de referenties van een ander gebruikersaccount met referenties voor het domein. Dit is een typisch scenario wanneer uw BITS-code wordt uitgevoerd als een systeemservice zoals LocalService, NetworkService of LocalSystem, omdat deze accounts geen bruikbare NTLM- of Kerberos-referenties hebben.

De proxydetectielogica die in BITS wordt gebruikt, doet het volgende wanneer een netwerkhulptoken (BG_TOKEN_NETWORK) is ingesteld:

  • Als IBackgroundCopyJob::SetProxySettings is aangeroepen met BG_JOB_PROXY_USAGE_PRECONFIG, leest u de lokale IE-proxyinstellingen met behulp van tokencontextimitatie van de taakeigenaar via WinHttpGetIEProxyConfigForCurrentUser. Vanaf Windows 10 versie 1809 (10.0; Build 17763), de identiteit van het helpertoken wordt gebruikt voor deze stap.
  • Als IBackgroundCopyJob::SetProxySettings is aangeroepen met BG_PROXY_USAGE_AUTODETECT of als de IE-instellingen uit het BG_JOB_PROXY_USAGE_PRECONFIG geval automatisch detecteren of een URL voor automatische configuratie opgeven, voert u automatische proxydetectie of WPAD (Web Proxy Autodiscovery Protocol) uit met behulp van helper-tokenimitatie via WinHttpGetProxyForUrl.

Daarna wordt helper-tokenimitatie gebruikt voor proxy- of serververificatie.

Vanaf Windows 10 versie 1809 (10.0; Build 17763), het geverifieerde proxyscenario met gebruikersspecifieke referenties wordt vereenvoudigd.

  1. Roep de SetCredentials-methode van de BITS-taak aan met BG_AUTH_SCHEME_NEGOTIATE, Gebruikersnaam ingesteld op NULL-, Wachtwoord ingesteld op NULL-en Doel ingesteld op BG_AUTH_TARGET_PROXY. Dit zorgt ervoor dat de impliciete referenties van het gebruikersaccount worden gebruikt voor NTLM- en Kerberos-verificatie met de proxy en server.
  2. Roep IBackgroundCopyJob::SetProxySettings aan met BG_JOB_PROXY_USAGE_PRECONFIG.
  3. QueryInterface voor IBitsTokenOptions-.
  4. Imiteer het gebruikersaccount dat u gebruikt voor NTLM-/Kerberos-referenties.
  5. SetHelperTokenaanroepen.
  6. Roep SetHelperTokenFlags- aan met BG_TOKEN_NETWORK.
  7. Imitatie herstellen.
  8. Ga door met het instellen van de taak.
  9. Bel cv op de taak.

Vóór Windows 10 versie 1809 (10.0; Build 17763), de juiste gebruikersidentiteit (de identiteit van het helpertoken) wordt gebruikt voor WPAD (network-based proxy detection) en voor proxyverificatie, maar de werkelijke detectie van lokale proxy-instellingen (IE) wordt altijd gedaan met behulp van het token van de taakeigenaar, zelfs wanneer een helpertoken is geconfigureerd. Als u deze korte termijn wilt omzeilen, kunt u deze stappen uitvoeren.

  1. Imiteer het gebruikersaccount dat u gebruikt voor NTLM-/Kerberos-referenties.
  2. Haal de IE-proxy-instellingen van het gebruikersaccount op door WinHttpGetIEProxyConfigForCurrentUseraan te roepen.
  3. Imitatie herstellen.
  4. Roep de SetCredentials-methode van de BITS-taak aan met BG_AUTH_SCHEME_NEGOTIATE, Gebruikersnaam ingesteld op NULL-, Wachtwoord ingesteld op NULL-en Doel ingesteld op BG_AUTH_TARGET_PROXY. Dit zorgt ervoor dat de impliciete referenties van het gebruikersaccount worden gebruikt voor NTLM- en Kerberos-verificatie met de proxy en server.
  5. Als in stap 2 een gebruikerspecifieke proxy-instellingen (bijvoorbeeld lpszProxy- of lpszProxyBypass- niet NULL-), stelt u de bijbehorende taakinstellingen handmatig in met SetProxySettings met de BG_JOB_PROXY_USAGE_OVERRIDE-instelling.
  6. Als stap 2 geen gebruikersspecifieke proxy-instellingen heeft opgeleverd, roept u SetProxySettings- aan met BG_JOB_USAGE_PRECONFIG.
  7. QueryInterface voor IBitsTokenOptions-.
  8. Imiteer het gebruikersaccount opnieuw.
  9. SetHelperTokenaanroepen.
  10. Roep SetHelperTokenFlags- aan met BG_TOKEN_NETWORK.
  11. Imitatie herstellen.
  12. Ga door met het instellen van de taak.
  13. Bel cv op de taak.