Сквозная (олицетворение) аутентификация с помощью ASP.NET и TFS API - PullRequest
6 голосов
/ 25 октября 2010

Я пытаюсь включить сквозную проверку подлинности или олицетворение на веб-сайте ASP.NET, который использует API TFS2010.

У меня это работает правильно с Cassini, однако с IIS 7.5 (Windows 7) что-тоидет не так.

Я нашел эту запись в блоге на эту тему и попробовал следующее:

private static void Test()
{
    TfsTeamProjectCollection baseUserTpcConnection = 
            new TfsTeamProjectCollection(new Uri(Settings.TfsServer));

    // Fails as 'baseUserTpcConnection' isn't authenticated
    IIdentityManagementService ims = 
            baseUserTpcConnection.GetService<IIdentityManagementService>();

    // Read out the identity of the user we want to impersonate
    TeamFoundationIdentity identity = ims.ReadIdentity(
            IdentitySearchFactor.AccountName, 
            HttpContext.Current.User.Identity.Name,
            MembershipQuery.None, 
            ReadIdentityOptions.None);

    TfsTeamProjectCollection impersonatedTpcConnection = new 
            TfsTeamProjectCollection(new Uri(Settings.TfsServer), 
            identity.Descriptor);
}

Когда я использую Cassini, ничего не требуется, кроме

collection = new TfsTeamProjectCollection(new Uri(server));

Я включил настройки web.config (и установил модуль проверки подлинности Windows):

<authentication mode="Windows"/>
<identity impersonate="true" />

Есть ли что-то очевидное, что я пропустил?

Ответы [ 2 ]

7 голосов
/ 26 октября 2010

Решение 1

Это метод делегирования.Как указывает Павел, в вашем активном каталоге это единственный параметр:

  1. Найдите сервер IIS в узле компьютеров консоли «Пользователи и компьютеры Active Directory».
  2. Нажмите на вкладку делегирования и выберите второй вариант: AD

  3. Создайте каталог 'Cache' в корневой папке IIS

  4. Добавьте следующеена ваш web.config:

<appSettings>
<add key="WorkItemTrackingCacheRoot" value="C:\path-to-web-root\Cache\"/>
</appSettings>

Убедитесь, что ваш web.config содержит:

<system.web>
<identity impersonate="true" />
</system.web>

Включите проверку подлинности Windows и имперсатонацию и отключите все остальное в проверке подлинности IIS:

IIS

Решение 2

Другое решение, позволяющее избежать описанных выше действийэто просто запустить ваше приложение на сайте TFS: 8080, как новое приложение.После этого проблема скачка удаляется, когда вы работаете в том же контексте, что и веб-служба, которую вызывает ваше приложение.

  • Создайте новый пул приложений, используйте сетевую идентификацию.
  • Убедитесь, что в вашем приложении отключена анонимная аутентификация
  • Убедитесь, что в нем включена аутентификация Windows.
  • Добавьте <identity impersonate="true" /> в веб-конфигурацию.
5 голосов
/ 25 октября 2010

Интересно, вы решаете старую проблему Double-Hop здесь?

...