如何将 windows 身份验证从 asp.net 应用程序传递到 TFS 2017

How to pass windows authentication from asp.net application to TFS 2017

我正在创建一个使用 AD 身份验证登录的 asp.net Web 应用程序。 此应用程序提供一些调用 TFS RestApi 的服务,这些服务也使用 AD 身份验证。 我需要将登录信息传递给 TFS,并且我根本不想在签名后保留 username/password。 有什么方法可以将当前会话令牌或身份传递给 TFS Rest Api? 有点类似于 SSO?

谢谢

您可以尝试以下方法:

  • 使用ASP.NET impersonation
  • 将 TFS 凭据存储在数据库或安全的地方并使用 TFS impersonation 在代码中连接到 TFS
  • 创建在 TFS 安全下运行的 WCF 服务 证书。此 WCF 服务将进行 TFS 查询。从你的网站 您可以调用此 WCF 服务的应用程序。

注:

  1. 对于方法 1,请查看本教程:设置模拟 对于 ASP.NET TFS API 应用程序
  2. 对于方式2,这也需要TFS Admin做一些 设置(模拟 TFS)

正如@PatrickLu 提到的,我们需要在 web.config 中启用模拟。 另一件事,如果你使用 HttpClient 因为它是异步的,它不会工作:

var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials=true})
HttpResponseMessage response = client.GetAsync("your-tfs-url").Result;

所以还是用WebClient比较好

 WebClient wc = new WebClient();              
 wc.UseDefaultCredentials = true;
 wc.Headers.Add(System.Net.HttpRequestHeader.ContentType, "application/json; 
 charset=utf-8");                       
 var result=wc.DownloadString("http://yourtfs-url");