1

我尝试使用旧 API 进行身份验证,因为我需要其中的一些方法,这些方法在新的 Rest API 中不可用。虽然在其余 API 中通过访问令牌进行身份验证工作正常,但所有使用旧 API 进行身份验证的尝试似乎都失败了。访问令牌背后​​的用户不是登录的 Windows 用户。我的代码如下所示:

      var tokenCredentials = new VssBasicCredential(string.Empty, token);

            var connectUrl = settings.ProjectCollectionUrl.ToUrl();
            var vssConnection = new VssConnection(connectUrl, tokenCredentials);

            // successful
            await Task.Run(async () => await vssConnection.ConnectAsync());
            // successful 
            await Task.Run(async () => await vssConnection.ParentConnection.ConnectAsync());

            var projectCollection = new TfsTeamProjectCollection(vssConnection.Uri, vssConnection.Credentials);
            
            // fails with with not authorized.
            projectCollection.Authenticate();

我也尝试了其他几种方法(例如,从网络凭据中创建 win 凭据。但是所有尝试都失败并出现未经授权的异常。遗留 API 中是否有任何已知的严重错误?

4

1 回答 1

0

哦,我花了很长时间才发现问题。TfsTeamProjectCollection 类上的 Authenticate 方法需要“身份(管理)”权限。我没有为我的访问令牌启用它,因为我想生成一个只读令牌,这就是我刚刚启用所有“读取”权限的原因。

另一方面,Rest API 不需要该权限即可以只读方式运行。

我希望这可以帮助遇到此线程的其他人。

于 2020-10-27T06:32:31.643 回答