Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Veel NuGet-bewerkingen, zoals herstellen en installeren, vereisen communicatie met een of meer pakketbronnen, die kunnen worden geconfigureerd in nuget.config bestanden.
Opmerking
Gebruik pakketbronnen die u vertrouwt.
Voor HTTP-feeds maakt NuGet een niet-geverifieerde aanvraag en als de server reageert met een HTTP 401-antwoord, zoekt NuGet in de volgende volgorde naar referenties:
-
Een omgevingsvariabele
NuGetPackageSourceCredentials_{name}. - Referenties in nuget.config bestanden.
- Gebruik een NuGet-referentieprovider als uw pakketbron er een biedt.
De verificatiegegevens die u moet gebruiken, worden bepaald door de pakketbron. Daarom moet u, tenzij u een referentieprovider gebruikt, contact opnemen met uw pakketbron voor welke referenties u moet gebruiken. Het is heel gebruikelijk dat pakketbronnen u verbieden uw wachtwoord te gebruiken (waarmee u zich bij de website aanmeldt) met NuGet. Normaal gesproken moet u een persoonlijk toegangstoken maken dat moet worden gebruikt als het wachtwoord van NuGet, maar u moet de documentatie controleren voor de NuGet-server die u gebruikt. Sommige pakketbronnen, zoals Azure DevOps en GitHub, hebben toegangstokens binnen het bereik, dus mogelijk moet u ervoor zorgen dat tokens die u maakt, het vereiste bereik bevatten.
Aanbevolen beveiligingsprocedures voor het beheren van referenties
Hoewel NuGet zoekt naar referenties in de bovenstaande volgorde, raden we de volgende volgorde aan om referenties veilig te beheren bij verificatie met privéfeeds:
Referentieprovider: het wordt ten zeerste aanbevolen om waar mogelijk een referentieprovider te gebruiken. Met deze methode wordt voorkomen dat geheimen in tekst zonder opmaak worden opgeslagen en het risico wordt geminimaliseerd dat geheimen per ongeluk beschikbaar worden via broncodebeheer. Bovendien vermindert het over het algemeen het aantal locaties dat u moet bijwerken wanneer referenties verlopen of gewijzigd worden. Als de referentieprovider eenmalige aanmelding ondersteunt, kan dit de frequentie van aanmeldingen verminderen of het aantal plaatsen waar referenties moeten worden opgeslagen. Raadpleeg de sectie referentieproviders voor meer informatie.
Versleutelde referenties in nuget.config: als een referentieprovider niet beschikbaar is, kunt u overwegen versleutelde referenties te gebruiken. Deze benadering biedt een extra beveiligingslaag door de inloggegevens op te slaan in een versleuteld formaat. Raadpleeg de sectie over referenties in nuget.config bestanden voor meer informatie.
Opmerking
Houd er rekening mee dat versleutelde wachtwoorden alleen worden ondersteund in Windows. Bovendien kunnen ze alleen worden ontsleuteld op dezelfde computer en door dezelfde gebruiker die ze oorspronkelijk heeft versleuteld.
Omgevingsvariabelemacro's gebruiken in nuget.config: als het gebruik van versleutelde referenties niet mogelijk is, kunt u overwegen de referenties op te slaan in het nuget.config-bestand met omgevingsvariabelemacro's. Met deze methode kunt u verwijzen naar omgevingsvariabelen die de werkelijke referenties bevatten. Het verbetert de transparantie en helpt eindgebruikers inzicht te krijgen in de configuratie van hun referenties. Raadpleeg de sectie over referenties in nuget.config bestanden voor meer informatie.
Omgevingsvariabelen rechtstreeks gebruiken: als terugvaloptie kunt u de referenties rechtstreeks opslaan in omgevingsvariabelen. Houd er echter rekening mee dat deze benadering minder zichtbaarheid en controle kan bieden in vergelijking met het gebruik van omgevingsvariabelemacro's in het nuget.config-bestand . Raadpleeg de sectie over referenties in omgevingsvariabelen voor meer informatie.
Clear Text Credentials in NuGet.Config: het wordt ten zeerste aanbevolen om een van de eerder genoemde opties te gebruiken. Als deze opties niet haalbaar zijn, kunt u de referenties opslaan in het nuget.config-bestand . Deze optie mag echter alleen worden gebruikt in omgevingen waar geen andere veilige optie beschikbaar is. Raadpleeg de sectie over referenties in nuget.config bestanden voor meer informatie.
Waarschuwing
Het opslaan van referenties in duidelijke tekst in het nuget.config-bestand , met name bij het opslaan van het bestand in broncodebeheer, is riskant omdat het de kans op onbedoelde referentielekken vergroot. Als u referenties in het nuget.config-bestand moet opslaan, kunt u overwegen een van de veiligere opties te gebruiken die hierboven worden genoemd.
Door aan deze aanbevolen procedures te houden, kunt u privéfeeds veilig verifiëren en tegelijkertijd het risico op blootstelling aan gevoelige informatie minimaliseren.
Referenties in omgevingsvariabelen
NuGet zoekt naar een omgevingsvariabele met de naam NuGetPackageSourceCredentials_{name}, waar {name} is de waarde van in de pakketbron van key="name" uw nuget.config-bestand .
De waarde van de omgevingsvariabele moet zijn Username={username};Password={password}en kan eventueel ook ;ValidAuthenticationTypes={types}.
Als de omgevingsvariabele niet overeenkomt met de conventie van NuGet, of als de waarde niet voldoet aan het verwachte patroon van NuGet, negeert NuGet de omgevingsvariabele stilzwijgend. NuGet gaat verder met het zoeken naar inloggegevens voor de pakketbron elders.
Er zijn geen logboeken om aan te geven dat NuGet de referentie van de omgevingsvariabele gebruikt, wat problemen kan veroorzaken bij het opsporen van verificatieproblemen als de omgevingsvariabele een verlopen geheim bevat en het nieuwe geheim wordt toegevoegd aan een nuget.config-bestand , omdat het configuratiebestand een lagere prioriteit heeft.
Aanbeveling
Het gebruik van omgevingsvariabelen in CI/CD-pijplijnen is een uitstekende keuze om het risico te minimaliseren dat geheimen worden vastgelegd in logboeken.
Denk bijvoorbeeld aan het volgende nuget.config bestand:
<configuration>
<packageSources>
<clear />
<add key="Contoso" value="https://nuget.contoso.com/v3/index.json" />
</packageSources>
</configuration>
In dit geval is Contoso de bronnaam en zoekt NuGet naar de naam NuGetPackageSourceCredentials_Contosovan de omgevingsvariabele.
Sommige platforms zijn hoofdlettergevoelig, dus wees voorzichtig met het gebruik van de juiste hoofdletters en kleine letters voor de omgevingsnaam en de bronnaam, zoals gedefinieerd in uw nuget.config bestand.
Als de gebruikersnaam is nugetUser en het wachtwoord is secret123, moet de waarde van de omgevingsvariabele worden ingesteld op Username=nugetUser;Password=secret123.
Als NuGet deze referentie alleen mag gebruiken voor HTTP-basisverificatie, maar niet voor andere verificatieschema's, kunt u de waarde van de omgevingsvariabele instellen op Username=nugetUser;Password=secret123;ValidAuthenticationTypes=Basic.
Zie de documenten over pakketreferenties in nuget.config bestanden voor meer informatie over geldige verificatietypen.
Opmerking
Omgevingsvariabelen hebben beperkingen voor toegestane tekens en verschillende besturingssystemen kunnen verschillende beperkingen hebben. Bijvoorbeeld, spaties zijn niet toegestaan. Daarom gebruikt u deze omgevingsvariabelefunctie om NuGet-referenties op te geven voor pakketbronnen die tekens gebruiken die ongeldig zijn voor de omgevingsvariabelen van uw platform. In dergelijke gevallen moet u de naam van de pakketbron in uw nuget.config-bestand wijzigen.
Referenties in nuget.config bestanden
nuget.config bestanden kunnen pakketbronreferenties bevatten.
Zie de sectie van het nuget.config document over bestandsreferentie en pakketbronreferenties voor meer informatie, inclusief syntax.
Het is echter eenvoudiger om dotnet nuget update source op de opdrachtregel te gebruiken om de referenties in te stellen.
Waarschuwing
Zorg ervoor dat u referenties instelt in nuget.config bestanden, met name wanneer u de referentie opslaat als tekst zonder opmaak. Als de referentie wordt geschreven naar een nuget.config-bestand dat zich in broncodebeheer bevindt, is er een verhoogd risico dat het geheim per ongeluk wordt gelekt.
Omdat NuGet instellingen van meerdere bestanden verzamelt, is het aanbevolen om uw inloggegevens op te slaan in uwnuget.config-bestand .
We raden u ook aan pakketbronnen op te slaan in de oplossing (broncodeopslagplaats) nuget.config bestand, inclusief een <clear /> element, voor de betrouwbaarheid van de build.
De gebruikersnaam en het wachtwoord voor tekst zonder opmaak in een nuget.config-bestand kunnen een omgevingsvariabele gebruiken door toe te voegen % aan het begin en einde van de naam van de omgevingsvariabele die u wilt gebruiken.
Zie de nuget.config referentiedocumenten voor het gebruik van omgevingsvariabelen voor meer informatie.
Verificatieproviders
NuGet heeft een uitbreidbaarheidsmodel, waardoor invoegtoepassingen NuGet-referenties kunnen opgeven. Het pad waar de referentieproviders moeten worden geïnstalleerd, zodat NuGet ze kan ontdekken, verschilt voor .NET Framework (NuGet.exe, MSBuild en Visual Studio) en de .NET SDK (uitgevoerd op de .NET 5+ runtime).
NuGet heeft een concept van uitvoeren in interactieve modus of niet-interactieve modus. Wanneer u zich in de niet-interactieve modus bevindt, wordt referentieproviders gevraagd nuGet niet te blokkeren. In de interactieve modus kan de aanmeldingsprovider u vragen in te loggen. Verschillende hulpprogramma's hebben verschillende standaardwaarden, dus de interactieve modus kan nodig zijn om ingeschakeld of uitgeschakeld te worden, afhankelijk van uw scenario.
| Werktuig | Verstek | Wisselknop |
|---|---|---|
dotnet CLI |
niet-interactief |
--interactive argument. Bijvoorbeeld: dotnet restore --interactive. |
| MSBuild | niet-interactief |
NuGetInteractive MSBuild-eigenschap. Bijvoorbeeld: msbuild -t:restore -p:NuGetInteractive=true. |
| NuGet.exe | interactief |
-NonInteractive argument. Bijvoorbeeld: nuget.exe restore -NonInteractive. |
| Visual Studio | interactief | niet mogelijk om in niet-interactieve modus te draaien. |
NuGet.exe ondersteunt zowel V1- als V2-referentieproviders, terwijl MSBuild en de .NET SDK alleen de platformoverschrijdende (V2)-invoegtoepassingen ondersteunen.
In Visual Studio heeft NuGet een Visual Studio Credential Provider-interface, die referentieproviders kunnen gebruiken om een grafische aanmeldingservaring te bieden of om Visual Studio-API's aan te roepen, indien nodig. NuGet in Visual Studio valt terug op de opdrachtregelreferentieproviders als er geen Visual Studio-referentieprovider kan worden gevonden die de bron verwerkt.
Visual Studio 2017 versie 15.9 en hoger bevat een referentieprovider voor Azure Artifacts, die werkt in Visual Studio, MSBuild en NuGet.exe.
De referentieprovider voor de .NET SDK is echter niet opgenomen in Visual Studio, dus moet afzonderlijk worden geïnstalleerd om met de dotnet CLI te werken.
Lijst van credentialleveranciers
Hier volgt een lijst met referentieproviders waarvan we op de hoogte zijn:
- AWS CodeArtifact NuGet Credential Provider
- Referentieprovider voor Azure Artifacts. Deze koppeling is alleen voor de opdrachtregelreferentieprovider.
- MyGet Credential Provider voor Visual Studio.