Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Na versão 4.8+, todos os clientes do NuGet (NuGet.exe, Visual Studio, dotnet.exe e MSBuild.exe) podem usar um plug-in de autenticação baseado no modelo de plug-ins multiplataforma do NuGet.
Autenticação no dotnet.exe
O Visual Studio e NuGet.exe são interativos por padrão. NuGet.exe contém uma opção para torná-la não interativa. Além disso, os plug-ins do NuGet.exe e do Visual Studio solicitam entrada ao usuário. Em dotnet.exe não há nenhuma solicitação e o padrão não é interativo.
O mecanismo de autenticação no dotnet.exe é o fluxo do dispositivo. Quando a operação de restauração ou adição de pacote for executada interativamente, os blocos de operação e as instruções ao usuário sobre como concluir as autenticações serão fornecidos na linha de comando. Quando o usuário concluir a autenticação, a operação continuará.
Para tornar a operação interativa, é necessário passar --interactive.
Atualmente, apenas os comandos explícitos dotnet restore e dotnet add package dão suporte a um comutador interativo.
Não há nenhum interruptor interativo em dotnet build e dotnet publish.
Autenticação no MSBuild
Semelhante ao dotnet.exe, o MSBuild.exe é, por padrão, não interativo e o seu mecanismo de autenticação é o fluxo do dispositivo.
Para permitir que a restauração pause e aguarde a autenticação, chame a restauração com msbuild -t:restore -p:NuGetInteractive="true".
Criando um plug-in de autenticação entre plataformas
Uma implementação de exemplo pode ser encontrada no plug-in do Provedor de Credenciais da Microsoft.
É muito importante que os plug-ins estejam em conformidade com os requisitos de segurança definidos pelas ferramentas de cliente do NuGet. A versão mínima necessária para um plug-in ser um plug-in de autenticação é 2.0.0. O NuGet executará o handshake com o plug-in e consultará as declarações de operação suportadas. Consulte as mensagens de protocolo de plug-in de plataforma cruzada do NuGet para obter mais detalhes sobre as mensagens específicas.
O NuGet definirá o nível de log e fornecerá informações de proxy para o plug-in quando aplicável. Fazer logon no console do NuGet só é aceitável depois que o NuGet definir o nível de log para o plug-in.
- Comportamento de autenticação de plug-in do .NET Framework
No .NET Framework, os plug-ins têm permissão para solicitar entrada a um usuário, na forma de uma caixa de diálogo.
- Comportamento de autenticação de plug-in do .NET Core
No .NET Core, não é possível mostrar uma caixa de diálogo. Os plug-ins devem usar o fluxo do dispositivo para autenticar. O plug-in pode enviar mensagens de log para o NuGet com instruções para o usuário. Note que o registro de log está disponível após o nível de log ter sido configurado para o plug-in. O NuGet não receberá nenhuma entrada interativa da linha de comando.
Quando o cliente chama o plug-in com a função Obter Credenciais de Autenticação, os plug-ins precisam se conformar ao alternador de interatividade e respeitar o alternador de diálogo.
A tabela a seguir resume como o plug-in deve se comportar para todas as combinações.
| IsNãoInterativa | CanShowDialog | Comportamento do plug-in |
|---|---|---|
| true | true | A opção IsNonInteractive tem precedência sobre a opção de diálogo. O plug-in não tem permissão para bloquear. |
| true | false | A opção IsNonInteractive tem precedência sobre a opção de diálogo. O plug-in não tem permissão para bloquear. |
| false | true | O plug-in pode mostrar uma caixa de diálogo, se necessário. Por exemplo, logon interativo ou seleção de conta. |
| false | false | O plug-in deve/não pode mostrar uma caixa de diálogo. O plug-in deve usar o fluxo do dispositivo para autenticar registrando uma mensagem de instruções por meio do logger. |
Antes do NuGet 7.0, o NuGet sempre definia CanShowDialog como false na CLI do dotnet e como true para a restauração do MSBuild.
A partir da 7.0, o NuGet sempre será configurado como true CanShowDialog, mas os plug-ins ainda devem detectar quando as interfaces gráficas não estão disponíveis.
Por exemplo, ao executar no Linux por uma conexão SSH sem encaminhamento de X, ou durante uma sessão remota do PowerShell.
Consulte as especificações a seguir antes de escrever um plug-in.