Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 配置NuGet服务器以使用身份验证_Authentication_Iis_Nuget_Ntlm_Nuget Server - Fatal编程技术网

Authentication 配置NuGet服务器以使用身份验证

Authentication 配置NuGet服务器以使用身份验证,authentication,iis,nuget,ntlm,nuget-server,Authentication,Iis,Nuget,Ntlm,Nuget Server,NuGet 1.5状态的 NuGet now supports connecting to private repositories that require basic or NTLM authentication. 但是,其中包含的链接只是指向页面,没有进一步提到如何设置身份验证 我想设置一个NuGet服务器,它可以通过https从internet访问,但只允许能够成功进行身份验证的人在服务器上查看或下载包 我确实创建了一个没有auth的应用程序,如中的创建远程提要部分所述,它在intr

NuGet 1.5状态的

NuGet now supports connecting to private repositories that require basic 
or NTLM authentication.
但是,其中包含的链接只是指向页面,没有进一步提到如何设置身份验证

我想设置一个NuGet服务器,它可以通过https从internet访问,但只允许能够成功进行身份验证的人在服务器上查看或下载包

我确实创建了一个没有auth的应用程序,如中的创建远程提要部分所述,它在intranet上运行良好。要启用此回购协议的身份验证,我必须做什么


另外一个要求是,解决方案不应花费数百美元(前两个答案推广的产品可能会解决问题,但成本很高)。

如果您想要真正安全的源并将其公开到internet,您可能需要看看在何处可以创建需要基本身份验证的私有源,默认情况下,使用SSL/HTTPS

使用您首选的身份提供商(Live Id、Facebook、Google、Stackoverflow、GitHub、OAuth等)甚至您自己的企业ADF(企业计划),在注册后几次点击,即可邀请您想要的人加入您的订阅源并分配他们的权限

更多信息:
有关在visual studio内或在生成服务器上设置身份验证的帮助,请查看我们的文档,网址为和。如果您需要进一步的帮助,我们很乐意通过我们的联系表或标有MyGet的StackOverflow问题提供帮助。

我实际上选择的解决方案是使用TeamCity作为NuGet服务器;虽然设置起来有点麻烦,因为它缺少nuget push功能,但它现在可以很好地工作,并且只向经过身份验证的用户提供nuget软件包,不需要额外的成本。

这可以通过在网站上启用Windows身份验证并通过命令行选项在生成服务器上添加凭据来实现,默认情况下,凭据是使用DPAPI密钥存储的,该密钥仅限于当前计算机上的当前用户(因此,对于生成服务器,您需要在使用服务帐户登录时添加凭据)

对于开发人员工作站,您只需要在NuGet Package Manager中添加提要,然后在刷新提要时输入/存储凭据(应该会提示您)

步骤1-要求在NuGet服务器上进行身份验证(IIS配置)

您需要确保为IIS安装了要使用的身份验证模块,对于NTLM auth,您将需要Windows身份验证模块。安装后,您可以打开IIS管理器并深入到您的网站,打开身份验证设置并启用Windows身份验证,确保禁用您不想支持的任何身份验证模块(如匿名、基本等)

要确保使用用户凭据,请右键单击站点并选择“高级设置”,然后单击“物理路径凭据”按钮。在对话框中,确保选择了“应用程序用户(通过身份验证)”

可以找到有关Windows身份验证的标准IIS配置的更多详细信息,包括从命令行配置和启用协商(如果这是您的目标的话)

步骤2-将源添加到NuGet配置(生成服务器、发布服务器)

这里我们添加了两个条目,一个将用作正常的、经过身份验证的提要URL(用于从服务器获取包)。第二个将用于发布到服务器(添加或更新nupkg文件)

步骤3-更新添加源(生成服务器、发布服务器)的凭据

这里我们向配置中添加了凭据,如果您查看
%APPDATA%\NuGet\NuGet.config
,您应该会看到您添加的提要以及加密的凭据

如果您不能以服务器身份登录,可以使用
StorePasswordInClearText
选项以明文形式存储凭据,但在共享环境中不建议这样做

步骤4-(可选)禁用Visual Studio中的发布URL(开发人员)

打开Visual Studio并导航到NuGet Package Manager设置对话框,取消选中“Fabrikam发布”提要。这不会影响您的发布能力,但是,如果您不禁用此提要,则在尝试刷新“所有”源的包时会收到错误(因为它是发布URL,而不是提要URL)

步骤5-(可选)在Visual Studio中存储Windows凭据(开发人员)

打开VisualStudio并导航到NuGet包管理器,单击“Fabrikam提要”。应提示您输入凭据。您可以在此处输入凭据并勾选“保存/记住”选项。这确保了在VisualStudio中刷新提要时不会经常要求提供凭据。在最新版本的NuGet Package Manager中,使用标准HTTP请求获取提要,并且不使用存储到NuGet.config的凭据

注意事项:

  • 您不需要第三方解决方案来托管私有的、安全的提要。NuGet server是免费提供的,IIS和NuGet工具都支持NTLM/AD/Windows安全性

  • 不需要发布到提要的开发人员不需要在其配置中存储凭据。它们也不需要配置“发布”提要。这仅对构建服务器或其他发布服务器是必需的(关于:步骤2和3)

  • 所有使用包提要的开发人员都会对步骤5感兴趣,这应该是大多数开发人员所需要的。他们可以简单地从VisualStudio中添加提要,然后在提示时输入凭据

  • 如果凭据发生更改,您可以导航到开始->管理Windows凭据并删除“VSCredentials\u nuget.fabrikam.com”

  • 第2步可以在可视化环境中执行
    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/"
    
    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"