【问题标题】:Authentication to NuGet on Artifactory from within Visual Studio从 Visual Studio 中对 Artifactory 上的 NuGet 进行身份验证
【发布时间】:2014-01-27 22:29:12
【问题描述】:

我们有一个本地 Artifactory Pro 服务器,它提供 nuget 包并使用 LDAP 对所有用户进行身份验证。从 cmdline 使用 Artifactory-NuGet 效果很好,但是在尝试使用 Visual Studio 中的包管理器时,身份验证失败。

我注意到,Visual Studio 在第一次失败的身份验证尝试后尝试添加域前缀:尝试以“用户”身份登录失败,然后登录身份验证窗口包含“域\用户”作为用户名。

我不确定问题的根源是在 Visual Studio 中还是在 Artifactory 中。我注意到对 Artifactory 的 Web 访问不接受格式为“DOMAIN\user”的用户名,尽管我认为它应该接受。

所以我的问题是:如何从 Visual Studio 中对 LDAP 支持、Artifactory 提供的经过身份验证的 NuGet 服务器进行身份验证?

【问题讨论】:

  • 您肯定需要每个用户都以“自己”身份进行身份验证吗?如果 repo 是内部的,您是否可以只允许开放读取访问权限以及单个写入帐户?
  • 很遗憾,这是不可能的,因为我们的开发人员位于多个位置,我们不能只复制所有服务器,也不能只允许没有身份验证的下载。
  • 我建议你和 JFrog 的人谈谈 - 他们真的很有帮助和热心。
  • 我做到了,但他们帮不了我。
  • Wilbert,您说“Visual Studio 在第一次失败的身份验证尝试后尝试添加域前缀”,但为什么初始登录尝试失败?与 Visual Studio 相比,来自 nuget 命令行的 HTTP 调用之间的确切区别是什么?您可以使用 Fiddler 检查 HTTP 流量。

标签: visual-studio ldap nuget visual-studio-2013 artifactory


【解决方案1】:

确保您输入了您的用户名(LDAP 用户名)和加密密码,您可以通过artifactory webapp 获得该密码

【讨论】:

  • 为此苦苦挣扎了一段时间,需要加密的密码。
【解决方案2】:

我有同样的问题,但我可以通过 NuGet 命令行的浏览器下载。

我用 fiddler 查看了不同的流量,似乎 VS 没有在身份验证后添加安全令牌。当我使用浏览器下载时,流量会在身份验证之后显示一个额外的 cookie,这在 VS 请求中不存在。

Browser
Request = https://server/repo/artifact.pkg
Responce = 401 not authrised
{user prompted for username and password}
Request = http TUNNEL encryped basic login
Responce = 200 encrypted security token
Request = https://server/repo/artifact.pkg + security token
Responce = 200 the pkg file


Visual studio
Request = https://server/repo/$metadata
Responce = 401 not authrised
{user prompted for username and password}
Request = http TUNNEL encryped basic login
Responce = 200 encrypted security token
Request = https://server/repo/$metadata + security token
Responce = 200 <edmx> list of artifacts
Request = https://server/repo/artifact.pkg
Responce = 401 not authrised
{user prompted for username and password}
Request = http TUNNEL encryped basic login
Responce = 200 encrypted security token
Request = https://server/repo/artifact.pkg
Responce = 301 its moved to "https://server/repo/artifact.pkg"

看起来 VS 坏了,cookie 没有在后续请求中存储和发送。它可能在 Windows 窗体中使用非常可怕的浏览器组件,并且在请求之间不保留 cookie 容器。可能想向 MS 报告。

【讨论】:

    【解决方案3】:

    如果您设置了一个包含提要名称和身份验证的全局 NuGet 配置文件,那么您只需将提要位置添加到 Visual Studio,它就会自动(并且静默)从全局配置中提取身份验证,只要因为 Visual Studio 中的提要名称与全局配置中的提要名称匹配。

    查看此页面https://docs.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior 了解如何设置手动配置。您可以使用机器配置、用户配置甚至解决方案配置,Visual Studio 仍会从中提取身份验证详细信息。

    令人沮丧的是,添加配置文件不会自动填充 Visual Studio 中的提要位置,但至少它足以读取身份验证详细信息。

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      相关资源
      最近更新 更多