paquetes paquete crear administrador authentication iis nuget ntlm nuget-server

authentication - crear - administrador de paquetes nuget



Configurando el servidor NuGet para usar la autenticación (3)

Las notas de lanzamiento para el estado de NuGet 1.5.

NuGet now supports connecting to private repositories that require basic or NTLM authentication.

Sin embargo, el enlace contenido allí simplemente lleva a la página de alojamiento de sus propios feeds de nuget , sin ninguna otra mención de cómo configurar la autenticación.

Me gustaría configurar un servidor NuGet al que se pueda acceder a través de https desde Internet, pero solo permite que las personas que puedan autenticarse con éxito puedan ver o descargar los paquetes en el servidor.

Creé una aplicación sin autenticación como se describe en la sección Creación de fuentes remotas en la documentación , y funciona bien en la intranet. ¿Qué debo hacer para habilitar la autenticación en este repositorio?

Un requisito adicional sería que la solución no debería costar cientos de dólares (las dos primeras respuestas promueven productos que pueden resolver el problema pero que cuestan mucho).


Esto se puede hacer habilitando la Autenticación de Windows en el sitio web y agregando credenciales en el servidor de compilación a través de la opción de línea de comandos de Sources . De manera predeterminada, las credenciales se almacenan utilizando una clave DPAPI restringida al usuario actual en la máquina actual (por lo tanto, para un servidor de compilación, necesitaría agregar credenciales mientras esté conectado bajo la cuenta de servicio.)

Para las estaciones de trabajo de Desarrollador, solo necesita agregar la fuente en NuGet Package Manager y luego ingresar / almacenar las credenciales cuando actualice la fuente (se le debe solicitar).

Paso 1 - Requerir autenticación en el servidor NuGet (Configuración IIS)

Debe asegurarse de que el módulo de autenticación que desea usar esté instalado para IIS, para la autenticación NTLM necesitará el módulo de autenticación de Windows. Una vez instalado, puede abrir el Administrador de IIS y acceder a su sitio web, abrir la configuración de autenticación y habilitar la autenticación de Windows, asegúrese de deshabilitar cualquier módulo de autenticación que no desee admitir (como Anónimo, Básico, etc.)

Para asegurarse de que se usan las credenciales de usuario, haga clic con el botón derecho en el Sitio y seleccione "Configuración avanzada", luego haga clic en el botón "Credenciales de ruta física". En el cuadro de diálogo, asegúrese de que esté seleccionado "Usuario de la aplicación (autenticación de paso)".

Puede encontrar información más detallada sobre la configuración estándar de IIS para la autenticación de Windows en TechNet, incluida la configuración desde una línea de comandos y habilitar Negociar (si ese era su objetivo).

Paso 2: agregar orígenes a NuGet Config (servidor de compilación, editores)

nuget.exe sources add -Name "Fabrikam Feed" -Source "https://nuget.fabrikam.com:443/nuget/" nuget.exe sources add -Name "Fabirkam Publish" -Source "https://nuget.fabirkam.com:443/"

Aquí estamos agregando dos entradas, una que se usará como la URL de alimentación normal y autenticada (para recuperar paquetes del servidor). La segunda se usará para publicar en el servidor (agregar o actualizar archivos nupkg).

Paso 3 - Actualizar credenciales para fuentes agregadas (Build Server, Publishers)

nuget.exe sources update -Name "Fabrikam Feed" -Source "https://nuget.fabrikam.com:443/nuget/" -UserName "Developer" -Password "g0d" nuget.exe sources update -Name "Fabrikam Publish" -Source "https://nuget.fabrikam.com:443/" -UserName "Developer" -Password "g0d"

Aquí hemos agregado credenciales a la configuración, si ve %APPDATA%/NuGet/NuGet.config debería ver las fuentes que ha agregado, así como las credenciales cifradas.

Si no tiene la capacidad de iniciar sesión como servidor, es posible almacenar las credenciales en texto sin StorePasswordInClearText utilizando la opción StorePasswordInClearText , pero esto no se recomienda en un entorno compartido.

Paso 4 - (Opcional) Deshabilite la URL de publicación en Visual Studio (Desarrolladores)

Abra Visual Studio y navegue hasta el cuadro de diálogo de configuración de NuGet Package Manager, desmarque la fuente "Fabrikam Publish". Sin embargo, esto no afectará su capacidad de publicación. Si no deshabilita esta fuente, recibirá errores cuando intente actualizar los paquetes para todas las fuentes (ya que es una URL de publicación, no una URL de fuente).

Paso 5 - (Opcional) Almacene las credenciales de Windows en Visual Studio (Desarrolladores)

Abra Visual Studio y navegue hasta NuGet Package Manager, haga clic en "Fabrikam Feed". Se le debe solicitar credenciales. Puede ingresar las credenciales aquí y marcar las opciones de guardar / recordar. Esto garantiza que el intento de actualizar la fuente en Visual Studio no solicite constantemente credenciales. En las últimas versiones de NuGet Package Manager, la fuente se obtiene mediante una solicitud HTTP estándar y las credenciales que ha almacenado en nuget.config NO se usan.

Notas:

  1. No necesita una solución de terceros para alojar feeds privados y seguros. El servidor NuGet está disponible gratuitamente y la seguridad NTLM / AD / Windows es compatible con las herramientas IIS y NuGet.

  2. Los desarrolladores que no necesitan publicar en el feed no necesitan almacenar credenciales en su configuración. Tampoco necesitan un feed ''Publicar'' configurado. Esto solo es necesario para los servidores de compilación u otros editores (re: Pasos 2 y 3).

  3. Todos los desarrolladores que usarán el paquete de información estarán interesados ​​en el Paso 5, esto debería ser todo lo que se requiere para la mayoría de los desarrolladores. Simplemente pueden agregar la fuente desde Visual Studio y luego ingresar sus credenciales cuando se le solicite.

  4. Si las credenciales cambian, puede navegar a Inicio -> Administrar credenciales de Windows y eliminar "VSCredentials_nuget.fabrikam.com".

  5. El paso 2 se puede realizar en el estudio visual, pero para mayor claridad he dado la línea de comandos aquí. El paso 3, sin embargo, debe realizarse a través de la línea de comandos (o usando las API de NuGet).

  6. En una versión futura de NuGet, el rumor es que la información de credenciales se puede almacenar a nivel de la solución o del proyecto (los detalles no están claros), es probable que esto solo sea de interés para las personas en un entorno de compilación de múltiples inquilinos donde no tienen acceso al servidor de compilación .

Espero que esto ayude a alguien más por ahí!


La solución que realmente elegí fue usar TeamCity como servidor NuGet; Si bien es un poco difícil de configurar debido a que carece de la funcionalidad nuget push, ahora funciona bien y sin costo adicional, ya que los paquetes de NuGet solo se entregan a usuarios autenticados.


Si desea feeds realmente seguros y los expone a Internet, es posible que desee echar un vistazo a MyGet.org, donde puede crear feeds privados que requieren autenticación básica, de forma predeterminada en SSL / HTTPS.

Invite a las personas que desea en su feed y asigne sus permisos, con unos pocos clics de registro usando su proveedor de identidad preferido (Live Id, Facebook, Google, , GitHub, OAuth, etc.) o incluso su propio ADFS corporativo plan).

Más información: https://www.myget.org/plans Para obtener ayuda sobre cómo configurar la autenticación dentro de Visual Studio o en su servidor de compilación, consulte nuestra documentación en https://docs.myget.org y nuestro blog . Si necesita más ayuda, estaremos encantados de ayudarle en Twitter , a través de nuestro formulario de contacto o mediante las preguntas de etiquetadas con MyGet.