使用Windows身份验证通过其API访问TFS

时间:2016-03-09 14:48:06

标签: asp.net tfs windows-authentication

所有

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

直到现在它工作正常。

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

我尝试过使用

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

这在开发环境中非常有用。但是当我在IIS 8.5中托管应用程序时,它在“应用程序池标识”和“网络服务”帐户下根本无法运行。

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

但我需要根据Windows凭证(Active Directory)来工作。

有人可以建议解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以在TFS应用层上部署Web应用程序,并将其应用程序池配置为与TFS Web服务具有相同的标识,并启用ASP.NET模拟。检查一下这种情况:ASP.NET MVC3 Windows Authentication Pass Through to TFS

答案 1 :(得分:0)

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

您有两种方法可以解决它:

  1. 在与tfs
  2. 相同的服务器上托管您的mvc Web应用程序
  3. 配置Active Directory以允许您的服务器标识将登录的用户凭据委派给其他服务。
  4. #1很简单,但#2需要为Active Directory域管理员提供大量工作。

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

    您将需要:

    1. 为您的服务器帐户配置了至少一个服务主体名称(SPN)(专用域\ svc_myaccout或网络服务的域\ servername $帐户)。
    2. 您需要启用您使用的帐户以允许在AD
    3. 中进行委派
    4. 需要为托管您的应用程序的服务器启用委派
    5. 这不是101,根据我的经验,在企业和小型企业中做了很多这样的事情,大多数域管理员都不知道Kerberos委派如何工作,或者如何配置它。

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