【发布时间】:2019-03-21 12:18:51
【问题描述】:
关于我们设置的一些信息:
- 本地 TFS 2018 更新 2(作为域服务帐户 A 运行)
- 独立的 Win2k16 VM 托管构建代理(使用域服务帐户 B 运行代理)
- 托管在 TFS 上的集合中的包源
所以这已经工作了几个月(新的部分是我们自己开发的 NuGet 包的包源)。在使用我们的构建服务器的 MVC 项目中,尝试连接到我们的包源时,NuGet 还原任务失败。失败时,消息是:
http://TFS_URL:8080/tfs/Development/_packaging/CustomNuGetFeed/nuget/v3/index.json: Unable to load the service index for source http://TFS_URL:8080/tfs/Development/_packaging/CustomNuGetFeed/nuget/v3/index.json.
Response status code does not indicate success: 401 (Unauthorized).
这就是构建日志吐出的所有信息;我深入研究并旋转了 WireShark,得到了以下结果:
请求
GET /tfs/Development/_packaging/CustomNuGetFeed/nuget/v3/index.json HTTP/1.1
user-agent: NuGet Command Line/4.4.1 (Microsoft Windows NT 6.2.9200.0)
X-NuGet-Client-Version: 4.4.1
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Authorization: Basic <base64_token>
Host: tfs:8080
回应
HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/8.5
X-TFS-ProcessId: d9a45aba-cc82-4f2c-98a3-e4441bfa456f
ActivityId: e780f2d6-1216-46ac-8c66-cb89379c7811
X-TFS-Session: e780f2d6-1216-46ac-8c66-cb89379c7811
X-VSS-E2EID: e780f2d6-1216-46ac-8c66-cb89379c7811
X-FRAME-OPTIONS: SAMEORIGIN
WWW-Authenticate: Bearer
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="tfs"
X-Powered-By: ASP.NET
P3P: CP="CAO DSP COR ADMa DEV CONo TELo CUR PSA PSD TAI IVDo OUR SAMi BUS DEM NAV STA UNI COM INT PHY ONL FIN PUR LOC CNT"
Lfs-Authenticate: NTLM
X-Content-Type-Options: nosniff
Date: Tue, 16 Oct 2018 19:57:17 GMT
Content-Length: 1293
响应页面消息
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.
但是,据我所知,有一个 .NET Core 应用程序仍然可以很好地恢复包(除非它只是从缓存中检索包)。
服务帐户的凭据根本没有更改。根据这些文档,我已确保服务帐户可以访问提要:https://docs.microsoft.com/en-us/azure/devops/artifacts/feeds/feed-permissions?view=vsts&tabs=previous-nav
我还尝试在 IIS 中为 TFS 服务器上的 TFS 站点禁用基本身份验证,并启用 Windows 身份验证。两者都不起作用。
所以我不知道问题可能来自我尝试/调查的所有内容。
【问题讨论】:
-
根据报错信息
401 - Unauthorized,应该是权限问题,需要仔细检查权限设置... -
@AndyLi-MSFT 权限“似乎”在某些方面是正确的,因为我可以使用 Build Agent 作为服务帐户远程进入 VM,打开浏览器,然后导航到 Package Feed没有错误。但是,尝试在虚拟机本身上运行“nuget restore”,也会出错(它只说“找不到版本包”)。通过 Visual Studio 恢复工作正常。
标签: tfs nuget azure-devops authorization tfsbuild