Wil*_*ert 21 authentication iis ntlm nuget nuget-server
NuGet 1.5状态的发行说明
NuGet now supports connecting to private repositories that require basic
or NTLM authentication.
Run Code Online (Sandbox Code Playgroud)
但是,其中包含的链接只会导致托管您自己的nuget供稿页面,而不再提及如何设置身份验证.
我想建立一个可通过互联网https访问的NuGet服务器,但只允许能够成功通过身份验证的人查看或下载服务器上的软件包.
我确实创建了一个没有auth的应用程序,如文档中的Creating Remote Feeds部分所述,它在Intranet上运行良好.如何在此repo上启用身份验证?
另外一个要求是解决方案不应该花费数百美元(前两个答案促进了可能解决问题但成本很高的产品).
Sha*_*son 42
这可以通过在网站上启用Windows身份验证并通过Sources命令行选项在构建服务器上添加凭据来完成,默认情况下,使用仅限当前计算机上当前用户的DPAPI密钥存储凭据(因此,构建服务器,您需要在服务帐户下登录时添加凭据.)
对于Developer工作站,您只需要在NuGet Package Manager中添加feed,然后在刷新feed时输入/存储凭据(应该提示您.)
步骤1 - 在NuGet服务器上要求身份验证(IIS配置)
您需要确保为IIS安装了您要使用的身份验证模块,对于NTLM身份验证,您将需要Windows身份验证模块.安装后,您可以打开IIS管理器并深入到您的网站,打开身份验证设置和启用Windows身份验证,确保禁用您不想支持的任何身份验证模块(如匿名,基本等)
要确保使用用户凭据,请右键单击"站点"并选择"高级设置",然后单击"物理路径凭据"按钮.在对话框中,确保选中"应用程序用户(传递身份验证)".
有关Windows身份验证的标准IIS配置的更多详细信息可以在TechNet上找到,包括从命令行进行配置并启用协商(如果这是您的目标.)
第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/"
Run Code Online (Sandbox Code Playgroud)
这里我们添加两个条目,一个将用作正常的,经过身份验证的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"
Run Code Online (Sandbox Code Playgroud)
在这里,我们为配置添加了凭据,如果您查看,%APPDATA%\NuGet\NuGet.config您应该看到已添加的订阅源以及加密凭据.
如果您无法以服务器身份登录,则可以使用该StorePasswordInClearText选项以明文形式存储凭据,但不建议在共享环境中使用此选项.
步骤4 - (可选)禁用Visual Studio中的发布URL(开发人员)
打开Visual Studio并导航到NuGet Package Manager设置对话框,取消选中"Fabrikam Publish"源.这不会影响您的发布能力,但是,如果您不禁用此Feed,则在尝试刷新"所有"来源的包时会收到错误(因为它是发布网址,而不是Feed网址.)
步骤5 - (可选)在Visual Studio(开发人员)中存储Windows凭据
打开Visual Studio并导航到NuGet包管理器,单击"Fabrikam Feed".系统会提示您输入凭据.您可以在此输入凭据并勾选保存/记住选项.这可确保尝试在Visual Studio中刷新源不会经常请求凭据.在最新版本的NuGet Package Manager中,使用标准HTTP请求获取源,并且不使用存储到nuget.config的凭据.
笔记:
您不需要第三方解决方案来托管私有的安全源.NuGet服务器是免费提供的,IIS和NuGet工具都支持NTLM/AD/Windows安全性.
不需要发布到订阅源的开发人员不需要在其配置中存储凭据.他们也不需要配置"发布"Feed.这仅适用于构建服务器或其他发布者(re:步骤2和3).
所有使用包源的开发人员都会对步骤5感兴趣,这应该是大多数开发人员所需要的全部内容.他们只需在Visual Studio中添加提要,然后在提示时输入其凭据.
如果凭据更改,您可以导航到"开始" - >"管理Windows凭据"并删除"VSCredentials_nuget.fabrikam.com".
第2步可以在visual studio中执行,但为了清楚起见,我在这里给出了命令行.但是,步骤3必须通过命令行(或使用NuGet API)执行.
在NuGet的未来版本中,传闻是凭证信息可以存储在解决方案或项目级别(详细信息不清楚),这可能只对多租户构建环境中无法访问构建服务器的人员感兴趣. .
希望这有助于其他人!
我实际选择的解决方案是使用 TeamCity 作为 NuGet 服务器;虽然设置起来有点麻烦,因为它缺乏 nuget 推送功能,但现在它可以很好地工作,并且无需额外费用即可仅向经过身份验证的用户提供 NuGet 包。
| 归档时间: |
|
| 查看次数: |
22498 次 |
| 最近记录: |