这可以通过在网站上启用 Windows 身份验证并通过Sources命令行选项在构建服务器上添加凭据来完成,默认情况下,凭据使用仅限于当前计算机上当前用户的 DPAPI 密钥存储(因此,对于构建服务器,您需要在服务帐户下登录时添加凭据。)
对于开发人员工作站,您只需在 NuGet 包管理器中添加提要,然后在刷新提要时输入/存储凭据(应该会提示您。)
第 1 步 - 要求在 NuGet 服务器上进行身份验证(IIS 配置)
您需要确保为 IIS 安装了您希望使用的身份验证模块,对于 NTLM 身份验证,您将需要 Windows 身份验证模块。安装后,您可以打开 IIS 管理器并深入了解您的网站,打开身份验证设置并启用 Windows 身份验证,确保禁用您不想支持的任何身份验证模块(例如匿名、基本等)
要确保使用用户凭据,请右键单击站点并选择“高级设置”,然后单击“物理路径凭据”按钮。在对话框中确保选择了“应用程序用户(直通身份验证)”。
可以在 TechNet上找到有关 Windows 身份验证的标准 IIS 配置的更多详细信息,包括从命令行配置和启用协商(如果这是您的目标)。
第 2 步 - 将源添加到 NuGet 配置(构建服务器、发布者)
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/"
这里我们添加了两个条目,一个将用作正常的、经过身份验证的 Feed URL(用于从服务器获取包。)第二个将用于发布到服务器(添加或更新 nupkg 文件。)
第 3 步 - 更新添加源的凭据(构建服务器、发布者)
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"
在这里,我们已将凭据添加到配置中,如果您查看,%APPDATA%\NuGet\NuGet.config
您应该会看到您添加的提要以及加密的凭据。
如果您无法以服务器身份登录,则可以使用该StorePasswordInClearText
选项以明文形式存储凭据,但不建议在共享环境中这样做。
第 4 步 - (可选)禁用 Visual Studio 中的发布 URL(开发人员)
打开 Visual Studio 并导航到 NuGet 包管理器设置对话框,取消选中“Fabrikam Publish”提要。这不会影响您发布的能力,但是,如果您不禁用此提要,您将在尝试刷新“所有”源的包时收到错误消息(因为它是发布 URL,而不是提要 URL。)
第 5 步 - (可选)在 Visual Studio 中存储 Windows 凭据(开发人员)
打开 Visual Studio 并导航到 NuGet 包管理器,单击“Fabrikam Feed”。应提示您输入凭据。您可以在此处输入凭据并勾选保存/记住选项。这可确保尝试在 Visual Studio 中刷新提要不会不断要求提供凭据。在 NuGet 包管理器的最新版本中,提要是使用标准 HTTP 请求获取的,并且不使用您存储到 nuget.config 的凭据。
笔记:
您不需要第三方解决方案来托管私有、安全的订阅源。NuGet 服务器免费提供,并且 IIS 和 NuGet 工具都支持 NTLM/AD/Windows 安全性。
不需要发布到提要的开发人员不需要在他们的配置中存储凭据。他们也不需要配置“发布”提要。这仅对构建服务器或其他发布者是必需的(重新:步骤 2 和 3。)
所有将使用包提要的开发人员都会对第 5 步感兴趣,这应该是大多数开发人员所需的全部内容。他们可以简单地从 Visual Studio 中添加提要,然后在出现提示时输入他们的凭据。
如果凭据更改,您可以导航到开始 -> 管理 Windows 凭据并删除“VSCredentials_nuget.fabrikam.com”。
第 2 步可以在 Visual Studio 中执行,但为了清楚起见,我在这里给出了命令行。但是,第 3 步必须通过命令行(或使用 NuGet API)执行。
在 NuGet 的未来版本中,有传言称凭证信息可以存储在解决方案或项目级别(细节尚不清楚),这可能只对无法访问构建服务器的多租户构建环境中的人感兴趣.
希望这对其他人有帮助!