簡體   English   中英

無法通過舊版 API (TfsTeamProjectCollection) 使用 TFS 2018 進行身份驗證

[英]Authenticate with TFS 2018 via legacy API (TfsTeamProjectCollection) not possible

我嘗試使用遺留 API 進行身份驗證,因為我需要那里的一些方法,這些方法在新的 Rest API 中不可用。雖然通過 rest API 中的訪問令牌進行身份驗證工作正常,但所有嘗試使用遺留 8210308581 進行身份驗證似乎失敗。 訪問令牌背后的用戶不是登錄的 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();

我也嘗試了其他幾種方法(例如,從網絡憑據中創建獲勝憑據。但是所有嘗試都因未授權的異常而失敗。遺留 API 中是否存在任何已知的嚴重錯誤?

哦,我花了很長時間才找出問題所在。 TfsTeamProjectCollection class 上的 Authenticate 方法需要“身份(管理)”權限。 我沒有為我的訪問令牌啟用它,因為我想生成一個只讀令牌,這就是我只啟用所有“讀取”權限的原因。

另一方面,Rest API 不需要以只讀方式獲得 function 的權限。

我希望這能幫助遇到此線程的其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM