【问题标题】:Access TFS via its API using Windows Authentication使用 Windows 身份验证通过其 API 访问 TFS
【发布时间】:2016-03-09 14:48:05
【问题描述】:

全部,

我正在使用 ASP.Net MVC 4 应用程序。 我已启用 Windows 身份验证

到目前为止一切正常。

现在我增强了应用程序以通过其 API 连接到 TFS。 为此,我需要使用 Windows 身份验证凭据。

我尝试过使用

ICredentialsProvider credential = new UICredentialsProvider();
TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(collectionUri, credential);

这在开发环境中效果很好。但是当我在 IIS 8.5 中托管应用程序时,它根本无法在“Application Pool Identity”和“Network Service”帐户下运行。

我尝试使用本地系统和特定用户来识别应用程序池,它正在工作。

但我需要它基于 Windows 凭据(活动目录)工作。

谁能提出解决方案?

【问题讨论】:

  • 您需要模拟,以便将用户的 Windows 凭据用于 TFS 连接。
  • 感谢您的回复,如果我提供模拟,它只是在等待网站加载(有点挂)。
  • 什么版本的 TFS?如果您使用的是 TFS 2015 或更高版本,则通过 TFS REST API 获取数据可能更容易。

标签: asp.net tfs windows-authentication


【解决方案1】:

您可以在 TFS 应用层上部署您的 Web 应用程序,并将其应用程序池配置为以与 TFS Web 服务相同的身份运行,并启用 ASP.NET 模拟。检查这个案例:ASP.NET MVC3 Windows Authentication Pass Through to TFS

【讨论】:

  • 感谢您的回复。我试过这个,但它连续 3 次询问凭据并抛出错误“访问注册表项 'HKEY_CURRENT_USER\Software\Microsoft\VSCommon\12.0\ClientServices\TokenStorage\VisualStudio' 被拒绝。”
  • 尝试将 IIS 应用程序池设置中的“加载用户配置文件”设置为 True。在此处查看解决方案:stackoverflow.com/questions/21268498/…
【解决方案2】:

您可能遇到了 Kerberos 双重希望问题。

您有两种选择来解决它:

  1. 将您的 mvc Web 应用程序托管在与 tfs 相同的服务器上
  2. 配置 Active Directory 以允许您的服务器身份将登录的用户凭据委托给其他服务。

#1 很简单,但 #2 需要您的 Active Directory 域管理员完成大量工作。

https://support.microsoft.com/en-us/kb/810572

你需要:

  1. 至少为您的服务器帐户配置了一个服务主体名称 (SPN)(专用域\svc_myaccout 或网络服务的域\servername$ 帐户)。
  2. 您使用的帐户需要启用以允许在 AD 中进行委派
  3. 托管您的应用程序的服务器需要启用委派

这不是 101,根据我的经验,在企业和小型企业中做过很多这样的事情,大多数域管理员不知道 Kerberos 委派是如何工作的,或者如何配置它。

您将需要了解如何并明确要求他们采取行动。比如“运行'setspn myapp.mydomain.com domain\myserviceaccount'”。

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多