【问题标题】:How to pass credentials when accessing a Nuget feed访问 Nuget 提要时如何传递凭据
【发布时间】:2015-05-28 16:28:00
【问题描述】:

我正在尝试从 Nuget 存储库下载包,该存储库需要使用 NuGet.Core 访问它的凭据。

我知道没有身份验证的 Nuget 存储库可以按如下方式访问:

//ID of the package to be looked up
string packageID = "EntityFramework";

//Connect to the official package repository
IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository("https://packages.nuget.org/api/v2");

//Initialize the package manager
string path = <PATH_TO_WHERE_THE_PACKAGES_SHOULD_BE_INSTALLED>
PackageManager packageManager = new PackageManager(repo, path);

//Download and unzip the package
packageManager.InstallPackage(packageID, SemanticVersion.Parse("5.0.0"));

(来源:Nuget blog

现在假设我拥有 Nuget 存储库的凭据。 我尝试使用 http 客户端和网络凭据获取包,但它不起作用。 那么如何将凭据传递给 Nuget 服务器?

我也想知道如何restrict access to a Nuget feed(新版本提供什么?)。

我似乎找不到任何明确的文档。

谢谢。

【问题讨论】:

标签: api authentication nuget nuget-server


【解决方案1】:

我假设您使用的是 NuGet 2.x 而不是 NuGet 3.0。

为了让 NuGet 向服务器发送凭据,您需要在 NuGet 的 HttpClient 类上配置 DefaultCredentialProvider。

HttpClient.DefaultCredentialProvider = new YourCredentialProvider ();

NuGet 提供了一个 SettingsCredentialProvider 类,该类将尝试在用户的 NuGet.Config 文件中查找用户名和密码,但您仍然需要实现自己的 ICredentialProvider,因为 SettingsCredentialProvider 需要将其传递给其构造函数。它通常使用此凭据提供程序来提示用户输入凭据。

HttpClient.DefaultCredentialProvider = new SettingsCredentialProvider(new ConsoleCredentialProvider(Console), SourceProvider, Console);

NuGet 提供了一个您可以使用的 ConsoleCredentialProvider。它还提供了一个控制台和一种创建源提供程序的方法。

要限制对您自己的 NuGet 服务器的访问,您可以使用 NuGet.Server NuGet 包并创建您自己的 Web 应用。然后,您可以将其托管在 IIS 上并使用标准 IIS 身份验证功能。

另一种方法是使用第三方托管服务,例如 MyGet,它允许您设置需要身份验证的私人供稿。

【讨论】:

  • 感谢您的回答。我发现你的another answer 更接近我的实际问题。我没有得到的是如何将我拥有的凭据传递给 GetCredentials() 函数。谁调用该函数?我可以在理解代码流程方面使用一些帮助。谢谢。
  • NuGet 在收到需要身份验证的 Web 响应返回后调用 GetCredentials 函数,但 NuGet 在服务器接受的 NuGet.Config 文件(设置提供程序)中找不到用户名/密码。如果您有想要从 GetCredentials 函数返回的用户名和密码,只需使用用户名和密码创建一个新的 System.Net.NetworkCredential 并返回。
猜你喜欢
  • 2013-10-08
  • 1970-01-01
  • 2017-04-29
  • 2018-03-29
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2013-12-12
相关资源
最近更新 更多