Feeds authenticeren met nuget.exe referentieaanbieders

In versie 3.3 is ondersteuning toegevoegd voor nuget.exe specifieke referentieproviders (v1). Sindsdien is ondersteuning voor (v2) referentieproviders die in alle opdrachtregelscenario's werken toegevoegd in versie , .

Zie Pakketten van geverifieerde feeds gebruiken voor meer informatie over alle verificatiemethoden.

ontdekking van nuget.exe authenticatieprovider

nuget.exe referentieproviders kunnen op drie manieren worden gebruikt:

  • Globaal: als u een referentieprovider beschikbaar wilt maken voor alle exemplaren die nuget.exe worden uitgevoerd onder het profiel van de huidige gebruiker, voegt u deze toe aan %LocalAppData%\NuGet\CredentialProviders. Mogelijk moet u de CredentialProviders map maken. Referentieproviders kunnen worden geïnstalleerd in de hoofdmap van de CredentialProviders map of in een submap. Als een referentieprovider meerdere bestanden/assembly's heeft, kunt u submappen gebruiken om de providers georganiseerd te houden.

  • Vanuit een omgevingsvariabele: referentieproviders kunnen overal worden opgeslagen en toegankelijk worden gemaakt door de nuget.exe omgevingsvariabele %NUGET_CREDENTIALPROVIDERS_PATH% in te stellen op de locatie van de provider. Deze variabele kan een door puntkomma's gescheiden lijst zijn (bijvoorbeeld path1;path2) als u meerdere locaties hebt.

  • Naast nuget.exe: nuget.exe referentieproviders kunnen in dezelfde map worden geplaatst als nuget.exe.

Wanneer u referentieproviders laadt, zoekt u nuget.exe op de bovenstaande locaties, in volgorde naar een bestand met de naam credentialprovider*.exe, en laadt u die bestanden in de volgorde waarin ze worden gevonden. Als er meerdere referentieproviders in dezelfde map staan, worden ze in alfabetische volgorde geladen.

Een nuget.exe referentiesleverancier maken

Een referentieprovider is een uitvoerbare opdrachtregeltool, genaamd in de vorm CredentialProvider*.exe, die invoer verzamelt, inloggegevens verkrijgt, en vervolgens de juiste exitcode en standaarduitvoer retourneert.

Een provider moet het volgende doen:

  • Bepaal of er inloggegevens kunnen worden opgegeven voor de doel-URI voordat u deze gaat opvragen. Als dat niet het geval is, moet de statuscode 1 zonder inloggegevens worden geretourneerd.
  • Niet wijzigen NuGet.Config (bijvoorbeeld door daar inloggegevens in te stellen).
  • Http-proxyconfiguratie zelf verwerken, omdat NuGet geen proxygegevens aan de invoegtoepassing levert.
  • Retourneert referenties of foutdetails naar nuget.exe door een JSON-antwoordobject (zie hieronder) naar stdout te schrijven met behulp van UTF-8-codering.
  • Voer optioneel extra tracelogboek uit naar stderr. Er mogen nooit geheimen naar stderr worden geschreven omdat dergelijke logbestanden bij uitgebreidheidsniveaus 'normaal' of 'gedetailleerd' door NuGet naar de console worden herhaald.
  • Onverwachte parameters moeten worden genegeerd, waardoor compatibiliteit met toekomstige versies van NuGet wordt geboden.

Invoerparameters

Parameter/schakelaar Description
Uri {value} De pakketbron-URI vereist referenties.
Niet-interactief Indien aanwezig, geeft de provider geen interactieve prompts uit.
IsRetry Als deze aanwezig is, geeft u aan dat deze poging een nieuwe poging is van een eerder mislukte poging. Providers gebruiken deze vlag doorgaans om ervoor te zorgen dat ze alle bestaande caches omzeilen en, indien mogelijk, vragen om nieuwe referenties.
Uitgebreidheid {value} Indien aanwezig, een van de volgende waarden: 'normaal', 'stil' of 'gedetailleerd'. Als er geen waarde wordt opgegeven, wordt standaard 'normaal' gebruikt. Providers moeten dit gebruiken als indicatie van het niveau van optionele logboekregistratie om naar de standaardfoutuitvoer te verzenden.

Afsluitcodes

Code Resultaat Description
0 Success Referentiegegevens zijn succesvol verkregen en naar stdout geschreven.
1 ProviderNotApplicable De huidige provider biedt geen referenties voor de opgegeven URI.
2 Failure De provider is de juiste provider voor de opgegeven URI, maar kan geen referenties opgeven. In dit geval zal nuget.exe verificatie niet opnieuw proberen en mislukt het. Een typisch voorbeeld is wanneer een gebruiker een interactieve aanmelding annuleert.

Standaarduitvoer

Vastgoed Opmerkingen
Gebruikersnaam Gebruikersnaam voor geverifieerde aanvragen.
Wachtwoord Wachtwoord voor geverifieerde aanvragen.
Message Optionele details over het antwoord, alleen gebruikt om aanvullende details weer te geven in foutgevallen.

Voorbeeld stdout:

{ "Username" : "freddy@example.com",
    "Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
    "Message"  : "" }

Problemen oplossen met een verificatieaanbieder

Op dit moment biedt NuGet niet veel directe ondersteuning voor het opsporen van fouten in aangepaste referentieproviders; probleem 4598 houdt dit werk bij.

U kunt ook het volgende doen:

  • Voer nuget.exe uit met de -verbosity switch om gedetailleerde uitvoer te controleren.

  • Voeg foutopsporingsberichten toe aan stdout op de juiste locaties.

  • Zorg ervoor dat u nuget.exe 3.3 of hoger gebruikt.

  • Koppel het foutopsporingsprogramma bij het opstarten met dit codefragment:

    while (!Debugger.IsAttached)
    {
        System.Threading.Thread.Sleep(100);
    }
    Debugger.Break();