Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Na versão 4.8+, todos os clientes NuGet (NuGet.exe, Visual Studio, dotnet.exe e MSBuild.exe) podem usar um plug-in de autenticação construído sobre o modelo de plug-ins de plataforma cruzada NuGet .
Autenticação no dotnet.exe
O Visual Studio e o NuGet.exe são, por padrão, interativos. NuGet.exe contém uma opção para torná-lo não interativo. Além disso, os plug-ins NuGet.exe e Visual Studio solicitam a entrada do usuário. No dotnet.exe não há aviso e o padrão não é interativo.
O mecanismo de autenticação no dotnet.exe é o fluxo de dispositivos. Quando a operação de restauração ou adição de pacote é executada interativamente, os blocos de operação e instruções para o usuário 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, deve-se passar --interactive.
Atualmente, apenas os comandos explícitos dotnet restore e dotnet add package suportam um switch interativo.
Não há interruptor interativo em dotnet build e dotnet publish.
Autenticação no MSBuild
Semelhante ao dotnet.exe, MSBuild.exe é por padrão não interativo, o mecanismo de autenticação MSBuild.exe é o fluxo de dispositivos.
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 multiplataforma
Um exemplo de implementação pode ser encontrado no plug-in Microsoft Credential Provider.
É muito importante que os plug-ins estejam em conformidade com os requisitos de segurança estabelecidos pelas ferramentas de cliente NuGet. A versão mínima necessária para um plugin ser um plugin 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 o plug-in multiplataforma NuGet mensagens do protocolo 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. O registro no console do NuGet só é aceitável depois que o NuGet define o nível de log para o plug-in.
- Comportamento de autenticação do plug-in do .NET Framework
No .NET Framework, os plug-ins têm permissão para solicitar a entrada de um usuário, na forma de uma caixa de diálogo.
- Comportamento de autenticação do plug-in do .NET Core
No .NET Core, uma caixa de diálogo não pode ser mostrada. Os plug-ins devem usar o fluxo de dispositivos para autenticar. O plug-in pode enviar mensagens de log para o NuGet com instruções para o usuário. Observe que o registo está disponível após o nível de log ter sido definido para o plugin. O NuGet não receberá nenhuma entrada interativa da linha de comando.
Quando o cliente chama o plug-in com um Obter Credenciais de Autenticação, os plug-ins precisam estar em conformidade com o interruptor de interatividade e respeitar o interruptor de diálogo.
A tabela a seguir resume como o plug-in deve se comportar para todas as combinações.
| IsNonInteractive | PodeMostrarDialogo | Comportamento do plugin |
|---|---|---|
| true | true | A opção IsNonInteractive tem precedência sobre a opção de diálogo. O plugin não tem permissão para bloquear. |
| true | false | A opção IsNonInteractive tem precedência sobre a opção de diálogo. O plugin não tem permissão para bloquear. |
| false | true | O plugin pode mostrar uma caixa de diálogo, se necessário. Por exemplo, login interativo ou seleção de conta. |
| false | false | O plugin deve / não pode mostrar uma caixa de diálogo. O plugin deve usar o fluxo do dispositivo para autenticar registrando uma mensagem de instrução através do registrador. |
Antes do NuGet 7.0, o NuGet sempre definia CanShowDialog como false na CLI dotnet e true para a restauração do MSBuild.
A partir da versão 7.0, o NuGet definirá sempre CanShowDialog como verdadeiro, mas os plug-ins ainda devem detetar quando as interfaces gráficas não estão disponíveis.
Por exemplo, ao executar no Linux através de uma conexão SSH sem encaminhamento do X, ou durante uma sessão remota do PowerShell.
Por favor, consulte as seguintes especificações antes de escrever um plugin.