Олицетворение IIS7 не работает для доступа к репозиторию TFS

Я пытаюсь создать страницу ASP.NET, которая добавляет рабочий элемент в TFS.

Я включил олицетворение и аутентификацию Windows:



 

На странице я получаю доступ к TFS и пытаюсь добавить рабочий элемент:

TfsTeamProjectCollection prjCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("xxx"));
WorkItemStore store = prjCollection.GetService();
...

Однако это работает, только когда я выбираю SpecificUserв Олицетворение ASP.NETи сохраните учетные данные.Это не работает, когда выбран Аутентифицированный пользователь.

Я проверил, что SpecificUser совпадает с Authenticated, но в последнем случае я получаю ошибки прав доступа (что указывает на то, что олицетворение работает неправильно).

TF30063: You are not authorized to access XXX. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
   at System.Net.HttpWebRequest.GetResponse()
   at     Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj)
   --- End of inner exception stack trace ---
   at     Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader)
   at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse& response)
   at Microsoft.TeamFoundation.Framework.Client.LocationWebService.Connect(Int32 connectOptions, ServiceTypeFilter[] serviceTypeFilters, Int32 lastChangeId)
   at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.Connect(ConnectOptions connectOptions)
   at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.EnsureConnected(ConnectOptions optionsNeeded)
   at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.get_InstanceId()
   at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore.InitializeInternal()
   at Microsoft.TeamFoundation.Client.TfsTeamProjectCollection.InitializeTeamFoundationObject(String fullName, Object instance)
   at Microsoft.TeamFoundation.Client.TfsConnection.CreateServiceInstance(Assembly assembly, String fullName)
   at Microsoft.TeamFoundation.Client.TfsConnection.GetService(Type serviceType)
   at Microsoft.TeamFoundation.Client.TfsConnection.GetService[T]()
   at ASP.index_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer)

Следующие переменные выглядят одинаково для обоих случаев:

HttpContext.Current.Request.LogonUserIdentity.Name
HttpContext.Current.Request.IsAuthenticated
HttpContext.Current.User.Identity.Name
System.Environment.UserName
System.Security.Principal.WindowsIdentity.GetCurrent().Name

Есть идеи?

РЕДАКТИРОВАТЬ:

В самом деле, как Джон упомянул ниже, проблема вызвана делегацией Kerberos.

Kerberos Delegation

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

DelegConfig — инструмент, помогающий решить проблемы аутентификации и делегирования Kerberos

Kerberos Delegation Check

7
задан the_void 17 March 2012 в 09:12
поделиться