Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Många NuGet-åtgärder, till exempel återställning och installation, kräver kommunikation med en eller flera paketkällor, som kan konfigureras i nuget.config filer.
Anmärkning
Använd paketkällor som du litar på.
För HTTP-feeds gör NuGet en oautentiserad begäran, och om servern svarar med ett HTTP 401-svar söker NuGet efter autentiseringsuppgifter i följande ordning:
-
En miljövariabel
NuGetPackageSourceCredentials_{name}
. - Autentiseringsuppgifter i nuget.config filer.
- Använd en NuGet-autentiseringsprovider om paketkällan tillhandahåller en.
De autentiseringsuppgifter som du behöver använda bestäms av paketkällan. Om du inte använder en provider för autentiseringsuppgifter bör du därför kontrollera med paketkällan vilka autentiseringsuppgifter som ska användas. Det är mycket vanligt att paketkällor förbjuder dig att använda ditt lösenord (som du loggar in på webbplatsen med) med NuGet. Vanligtvis behöver du skapa en personlig åtkomsttoken som ska användas som NuGet-lösenord, men du bör kontrollera dokumentationen för Den NuGet-server som du använder. Vissa paketkällor, till exempel Azure DevOps och GitHub, har begränsade åtkomsttoken, så du kan behöva se till att alla token som du skapar innehåller det nödvändiga omfånget.
Metodtips för säkerhet för att hantera autentiseringsuppgifter
Även om NuGet söker efter autentiseringsuppgifter i den ordning som nämns ovan rekommenderar vi följande sekvens för säker hantering av autentiseringsuppgifter vid autentisering med privata feeds:
Autentiseringsprovider: Vi rekommenderar starkt att du använder en provider för autentiseringsuppgifter när det är möjligt. Den här metoden undviker att lagra hemligheter i oformaterad text och minimerar risken för att oavsiktligt exponera hemligheter via källkontroll. Dessutom minskar det vanligtvis antalet platser som du behöver uppdatera när en autentiseringsuppgift upphör att gälla eller ändras. Om providern för autentiseringsuppgifter stöder enkel inloggning kan det minska frekvensen för inloggningar eller antalet platser där autentiseringsuppgifterna måste sparas. Mer information finns i avsnittet leverantörer av autentiseringsuppgifter .
Krypterade autentiseringsuppgifter i nuget.config: Om en provider för autentiseringsuppgifter inte är tillgänglig bör du överväga att använda krypterade autentiseringsuppgifter. Den här metoden ger ett extra säkerhetslager genom att lagra autentiseringsuppgifterna i ett krypterat format. Mer information finns i avsnittet om autentiseringsuppgifter i nuget.config filer.
Anmärkning
Tänk på att krypterade lösenord endast stöds i Windows. Dessutom kan de bara dekrypteras på samma dator och av samma användare som ursprungligen krypterade dem.
Använda miljövariabelmakron i nuget.config: Om det inte går att använda krypterade autentiseringsuppgifter bör du överväga att lagra autentiseringsuppgifterna i filennuget.config med miljövariabelmakron. Med den här metoden kan du referera till miljövariabler som innehåller de faktiska autentiseringsuppgifterna. Det förbättrar transparensen och hjälper slutanvändarna att förstå hur deras autentiseringsuppgifter konfigureras. Mer information finns i avsnittet om autentiseringsuppgifter i nuget.config filer.
Använda miljövariabler direkt: Som reservalternativ kan du lagra autentiseringsuppgifterna direkt i miljövariabler. Tänk dock på att den här metoden kan ge mindre synlighet och kontroll jämfört med att använda miljövariabelmakron i nuget.config-filen . Mer information finns i avsnittet om autentiseringsuppgifter i miljövariabler.
Rensa textautentiseringsuppgifter i NuGet.Config: Vi rekommenderar starkt att du använder något av de tidigare nämnda alternativen. Om de här alternativen inte är möjliga kan du lagra autentiseringsuppgifterna i filennuget.config . Det här alternativet bör dock endast användas i miljöer där inget annat säkert alternativ är tillgängligt. Mer information finns i avsnittet om autentiseringsuppgifter i nuget.config filer.
Varning
Det är riskabelt att lagra autentiseringsuppgifter i klartext i nuget.config-filen , särskilt när filen sparas i källkontrollen, eftersom det ökar risken för oavsiktliga läckage av autentiseringsuppgifter. Om du måste lagra autentiseringsuppgifter i filennuget.config bör du överväga att använda något av de säkrare alternativ som nämns ovan.
Genom att följa dessa metodtips kan du autentisera privata feeds på ett säkert sätt samtidigt som risken för exponering av känslig information minimeras.
Autentiseringsuppgifter i miljövariabler
NuGet söker efter en miljövariabel med namnet NuGetPackageSourceCredentials_{name}
, där {name}
är värdet key="name"
för i dinnuget.config-filens paketkälla.
Värdet för miljövariabeln måste vara Username={username};Password={password}
, och kan eventuellt innehålla ;ValidAuthenticationTypes={types}
.
Om miljövariabeln inte matchar NuGets konvention, eller om värdet inte uppfyller NuGets förväntade mönster, ignorerar NuGet tyst miljövariabeln och fortsätter att söka efter autentiseringsuppgifter för paketkällan någon annanstans.
Det finns inga loggar som signalerar att NuGet använder autentiseringsuppgifterna från miljövariabeln, vilket kan orsaka problem med felsökning av autentiseringsproblem om miljövariabeln innehåller en hemlighet som har upphört att gälla och den nya hemligheten läggs till i en nuget.config fil, eftersom konfigurationsfilen har lägre prioritet.
Tips/Råd
Att använda miljövariabler i CI/CD-pipelines är ett utmärkt val för att minimera risken för att hemligheter registreras i loggar.
Tänk till exempel på följande nuget.config fil:
<configuration>
<packageSources>
<clear />
<add key="Contoso" value="https://nuget.contoso.com/v3/index.json" />
</packageSources>
</configuration>
I det här fallet är Contoso
källnamnet och NuGet söker efter miljövariabelnamnet NuGetPackageSourceCredentials_Contoso
.
Vissa plattformar är skiftlägeskänsliga, så var noga med att använda korrekta versaler och gemener för miljönamn och källnamn, som det är angivet i din nuget.config-fil .
Om användarnamnet är nugetUser
och lösenordet är secret123
ska miljövariabelns värde anges till Username=nugetUser;Password=secret123
.
Om NuGet endast ska använda den här autentiseringsuppgiften för HTTP Basic-autentisering, men inte andra autentiseringsscheman, kan du ange miljövariabelns värde till Username=nugetUser;Password=secret123;ValidAuthenticationTypes=Basic
.
Mer information om giltiga autentiseringstyper finns i dokumenten om paketautentiseringsuppgifter i nuget.config filer.
Anmärkning
Miljövariabler har begränsningar för tillåtna tecken och olika operativsystem kan ha olika begränsningar. Till exempel är blanksteg inte tillåtna. Därför använder du den här miljövariabelfunktionen för att ange NuGet-autentiseringsuppgifter för paketkällor som använder tecken som är ogiltiga för plattformens miljövariabler. I sådana fall bör du byta namn på paketkällan i dinnuget.config-fil .
Autentiseringsuppgifter i nuget.config filer
nuget.config filer kan innehålla autentiseringsuppgifter för paketkällan.
Mer information, inklusive syntax, finns i avsnittet nuget.config filreferensdokument om autentiseringsuppgifter för paketkällan .
Det är dock enklare att använda dotnet nuget update source
på kommandoraden för att ange autentiseringsuppgifterna.
Varning
Var försiktig när du anger autentiseringsuppgifter i nuget.config filer, särskilt när du sparar autentiseringsuppgifterna som oformaterad text. Om autentiseringsuppgifterna skrivs till en nuget.config fil som finns i källkontrollen, finns det en ökad risk för att hemligheten oavsiktligt läcker ut.
Eftersom NuGet ackumulerar inställningar från flera filer rekommenderar vi att du sparar autentiseringsuppgifter till användaren nuget.config filen.
Vi rekommenderar också att du sparar paketkällor i lösningen (källkodslagringsplatsen) nuget.config fil, inklusive ett <clear />
element, för att skapa tillförlitlighet.
Användarnamnet och lösenordet för oformaterad text i en nuget.config fil kan använda en miljövariabel genom att lägga %
till i början och slutet av det miljövariabelnamn som du vill använda.
Mer information finns i nuget.config referensdokument om hur du använder miljövariabler.
Leverantörer av autentiseringsuppgifter
NuGet har en utökningsmodell som gör att plugin-program kan ange NuGet-autentiseringsuppgifter. Den sökväg som autentiseringsleverantörer måste installeras för att NuGet ska kunna upptäcka skiljer sig åt för .NET Framework (NuGet.exe, MSBuild och Visual Studio) och .NET SDK (som körs på .NET 5+-runtime).
NuGet har konceptet att köras i interaktivt läge eller i icke-interaktivt läge. I icke-interaktivt läge uppmanas leverantörer av autentiseringsuppgifter att inte blockera NuGet. I interaktivt läge kan providern för autentiseringsuppgifter uppmana dig att logga in. Olika verktyg har olika standardvärden, så interaktivt läge kan behöva vara opt-in eller opt-out, beroende på ditt scenario.
Verktyg | Förinställning | Växel |
---|---|---|
dotnet CLI |
icke-interaktiv |
--interactive argument. Till exempel dotnet restore --interactive . |
MSBuild | icke-interaktiv |
NuGetInteractive MSBuild-egenskap. Till exempel msbuild -t:restore -p:NuGetInteractive=true . |
NuGet.exe | interaktiv |
-NonInteractive argument. Till exempel nuget.exe restore -NonInteractive . |
Visual Studio | interaktiv | inte kan köras i icke-interaktivt läge. |
NuGet.exe stöder både V1- och V2-autentiseringsprovidrar, medan MSBuild och .NET SDK endast stöder plugin-program för plattformsoberoende (V2).
I Visual Studio har NuGet ett gränssnitt för Visual Studio Credential Provider, som autentiseringsprovidrar kan använda för att tillhandahålla en grafisk inloggningsupplevelse eller anropa Visual Studio-API:er om det behövs. NuGet i Visual Studio återgår till kommandoradens autentiseringsprovidrar om den inte hittar en Visual Studio-autentiseringsprovider som hanterar källan.
Visual Studio 2017 version 15.9 och senare innehåller en provider för autentiseringsuppgifter för Azure Artifacts, som fungerar i Visual Studio, MSBuild och NuGet.exe.
Autentiseringsprovidern för .NET SDK ingår dock inte i Visual Studio, så måste installeras separat för att fungera med dotnet
CLI.
Lista över leverantörer av autentiseringsuppgifter
Här är en lista över leverantörer av autentiseringsuppgifter som vi känner till:
- AWS CodeArtifact NuGet-autentiseringsprovider
- Azure Artifacts Credential Provider. Den här länken är bara för kommandoradens autentiseringsprovider.
- MyGet Autentiseringsleverantör för Visual Studio.