Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Na versão 3.3 foi adicionado suporte para nuget.exe provedores de credenciais específicos (v1). Desde então, foi adicionado suporte de versão 4.8para provedores de credenciais (v2) que funcionam em todos os cenários de linha de comando (nuget.exe, dotnet.exe, msbuild.exe).
Consulte Consumindo pacotes de feeds autenticados para obter mais detalhes sobre todas as abordagens de autenticação.
nuget.exe descoberta de provedor de credenciais
nuget.exe provedores de credenciais podem ser usados de 3 maneiras:
Globalmente: para disponibilizar um provedor de credenciais para todas as instâncias de execução sob o perfil do
nuget.exeusuário atual, adicione-o ao%LocalAppData%\NuGet\CredentialProviders. Talvez seja necessário criar aCredentialProviderspasta. Os provedores de credenciais podem ser instalados na raiz daCredentialProviderspasta ou dentro de uma subpasta. Se um provedor de credenciais tiver vários arquivos/assemblies, você poderá usar subpastas para manter os provedores organizados.A partir de uma variável de ambiente: os provedores de credenciais podem ser armazenados em qualquer lugar e disponibilizados definindo
nuget.exea%NUGET_CREDENTIALPROVIDERS_PATH%variável de ambiente para o local do provedor. Essa variável pode ser uma lista separada por ponto-e-vírgula (por exemplo,path1;path2) se você tiver vários locais.Juntamente com nuget.exe: nuget.exe provedores de credenciais podem ser colocados na mesma pasta que
nuget.exe.
Ao carregar provedores de credenciais, pesquisa os locais acima, na ordem, para qualquer arquivo chamado nuget.exee, em seguida, credentialprovider*.exe carrega esses arquivos na ordem em que são encontrados. Se existirem vários provedores de credenciais na mesma pasta, eles serão carregados em ordem alfabética.
Criando um provedor de credenciais nuget.exe
Um provedor de credenciais é um executável de linha de comando, nomeado no formato CredentialProvider*.exe, que reúne entradas, adquire credenciais conforme apropriado e, em seguida, retorna o código de status de saída apropriado e a saída padrão.
Um provedor deve fazer o seguinte:
- Determine se ele pode fornecer credenciais para o URI de destino antes de iniciar a aquisição de credenciais. Caso contrário, ele deve retornar o código de status 1 sem credenciais.
- Não modificar
NuGet.Config(como definir credenciais lá). - Manipule a configuração de proxy HTTP por conta própria, pois o NuGet não fornece informações de proxy para o plug-in.
- Retorne credenciais ou detalhes de erro para
nuget.exe, escrevendo um objeto de resposta JSON (veja abaixo) para stdout, usando codificação UTF-8. - Opcionalmente, emita um log de rastreamento adicional para stderr. Nenhum segredo deve ser escrito para o stderr, já que, em níveis de verbosidade "normal" ou "detalhado", tais informações são ecoadas pelo NuGet no console.
- Parâmetros inesperados devem ser ignorados, fornecendo compatibilidade direta com versões futuras do NuGet.
Parâmetros de entrada
| Parâmetro/Comutador | Description |
|---|---|
| Uri {value} | O URI de origem do pacote que requer credenciais. |
| Não interativo | Se presente, o provedor não emite prompts interativos. |
| IsRetry | Se presente, indica que essa tentativa é uma nova tentativa de uma tentativa falhada anteriormente. Os provedores normalmente usam esse sinalizador para garantir que ignorem qualquer cache existente e solicitem novas credenciais, se possível. |
| Verbosidade {value} | Se presente, um dos seguintes valores: "normal", "silencioso" ou "detalhado". Se nenhum valor for fornecido, o padrão será "normal". Os provedores devem usar isso como uma indicação do nível de log opcional a ser emitido para o fluxo de erro padrão. |
Códigos de saída
| Código | Result | Description |
|---|---|---|
| 0 | Sucesso | As credenciais foram adquiridas com sucesso e foram registadas em stdout. |
| 1 | ProvedorNãoAplicável | O provedor atual não fornece credenciais para o URI fornecido. |
| 2 | Failure | O provedor é o provedor correto para o URI fornecido, mas não pode fornecer credenciais. Nesse caso, nuget.exe não tentará novamente a autenticação e falhará. Um exemplo típico é quando um usuário cancela um login interativo. |
Saída padrão
| Propriedade | Observações |
|---|---|
| Nome de utilizador | Nome de usuário para solicitações autenticadas. |
| Palavra-passe | Palavra-passe para pedidos autenticados. |
| Message | Detalhes opcionais sobre a resposta, usados apenas para mostrar detalhes adicionais em casos de falha. |
Exemplo stdout:
{ "Username" : "freddy@example.com",
"Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
"Message" : "" }
Solução de problemas de um provedor de credenciais
Atualmente, o NuGet não fornece muito suporte direto para depuração de provedores de credenciais personalizados; o problema 4598 está acompanhando este trabalho.
Você também pode fazer o seguinte:
Execute nuget.exe com a opção
-verbositypara inspecionar a saída detalhada.Adicione mensagens de depuração em locais adequados no
stdout.Certifique-se de que está a utilizar o nuget.exe 3.3 ou superior.
Anexe o depurador na inicialização com este trecho de código:
while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } Debugger.Break();