Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En la versión 4.8 y posteriores, todos los clientes nuGet (NuGet.exe, Visual Studio, dotnet.exe y MSBuild.exe) pueden usar un complemento de autenticación basado en el modelo de complementos multiplataforma de NuGet .
Autenticación en dotnet.exe
Visual Studio y NuGet.exe son interactivos de forma predeterminada. NuGet.exe contiene un modificador para que no sea interactivo. Además, los complementos de NuGet.exe y Visual Studio solicitan al usuario la entrada. En dotnet.exe no hay ninguna solicitud y el valor predeterminado no es interactivo.
El mecanismo de autenticación de dotnet.exe es el flujo de dispositivo. Cuando la operación de restauración o adición de paquetes se ejecuta de forma interactiva, la operación se detiene e instrucciones al usuario sobre cómo completar las autenticaciones se proporcionarán en la línea de comandos. Cuando el usuario complete la autenticación, la operación continuará.
Para hacer que la operación sea interactiva, se debe pasar --interactive.
Actualmente, solo los comandos explícitos dotnet restore y dotnet add package admiten un conmutador interactivo.
No hay ningún conmutador interactivo en dotnet build y dotnet publish.
Autenticación en MSBuild
De forma similar a dotnet.exe, MSBuild.exe es de forma predeterminada no interactiva, el mecanismo de autenticación de MSBuild.exe es flujo de dispositivo.
Para permitir que la restauración se detenga y espere a la autenticación, llame a restore con msbuild -t:restore -p:NuGetInteractive="true".
Creación de un complemento de autenticación multiplataforma
Puede encontrar una implementación de ejemplo en el complemento Proveedor de credenciales de Microsoft.
Es muy importante que los complementos se ajusten a los requisitos de seguridad establecidos por las herramientas de cliente de NuGet. La versión mínima necesaria para que un complemento sea un complemento de autenticación es 2.0.0. NuGet realizará el intercambio inicial con el complemento y consultará las reclamaciones de operación admitidas. Consulte los mensajes del protocolo de complemento multiplataforma de NuGet para obtener más detalles sobre los mensajes específicos.
NuGet establecerá el nivel de registro y proporcionará información de proxy al complemento cuando corresponda. El registro en la consola de NuGet solo es aceptable después de que NuGet haya establecido el nivel de registro en el complemento.
- Comportamiento de autenticación del complemento de .NET Framework
En .NET Framework, los complementos pueden solicitar a un usuario una entrada, en forma de diálogo.
- Comportamiento de autenticación del complemento de .NET Core
En .NET Core, no se puede mostrar un cuadro de diálogo. Los complementos deben usar el flujo de dispositivo para autenticarse. El complemento puede enviar mensajes de registro a NuGet con instrucciones al usuario. Tenga en cuenta que el registro está disponible una vez establecido el nivel de registro en el complemento. NuGet no tomará ninguna entrada interactiva desde la línea de comandos.
Cuando el cliente llama al complemento con una función Obtener Credenciales de Autenticación, los complementos deben ajustarse al interruptor de interactividad y respetar el interruptor de diálogo.
En la tabla siguiente se resume cómo debe comportarse el complemento para todas las combinaciones.
| IsNonInteractive | CanShowDialog | Comportamiento del complemento |
|---|---|---|
| true | true | El interruptor IsNonInteractive tiene prioridad sobre el interruptor de diálogo. No se permite que el complemento bloquee. |
| true | false | El interruptor IsNonInteractive tiene prioridad sobre el interruptor de diálogo. No se permite que el complemento bloquee. |
| false | true | El complemento puede mostrar un cuadro de diálogo si es necesario. Por ejemplo, inicio de sesión interactivo o selección de cuenta. |
| false | false | El complemento debe/no puede mostrar un cuadro de diálogo. El complemento debe usar el flujo de dispositivo para autenticarse mediante el registro de un mensaje de instrucción a través del registrador. |
Antes de NuGet 7.0, NuGet siempre establecía CanShowDialog en false en la CLI de .NET y en true para la restauración de MSBuild.
A partir de la versión 7.0, NuGet siempre establecerá CanShowDialog como true, pero los complementos deben seguir detectando cuándo las interfaces gráficas no están disponibles.
Por ejemplo, cuando se ejecuta en Linux a través de una conexión SSH sin X forwarding o en una sesión remota de PowerShell.
Consulte las siguientes especificaciones antes de escribir un complemento.