Tôi đang cố gắng xây dựng một trang ASP.NET bổ sung thêm một mục công việc trong TFS.IIS7 Mạo danh không hoạt động để truy cập kho lưu trữ TFS
tôi đã kích hoạt mạo danh và Windows xác thực:
<authentication mode="Windows" />
<identity impersonate="true" password="" userName="" />
<customErrors mode="Off" />
Trong trang này, tôi truy cập TFS và cố gắng thêm một hạng mục công trình:
TfsTeamProjectCollection prjCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("xxx"));
WorkItemStore store = prjCollection.GetService<WorkItemStore>();
...
Tuy nhiên, nó chỉ hoạt động khi tôi chọn SpecificUser trong Mạo danh ASP.NET và lưu trữ thông tin đăng nhập. Nó không hoạt động khi Người dùng được xác thực được chọn.
Tôi đã kiểm tra xem SpecificUser có giống với xác thực không, nhưng tôi nhận được các lỗi quyền trong trường hợp sau (điều này cho biết rằng mạo danh không hoạt động chính xác).
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)
Các biến sau trông giống nhau cho cả hai trường hợp:
HttpContext.Current.Request.LogonUserIdentity.Name
HttpContext.Current.Request.IsAuthenticated
HttpContext.Current.User.Identity.Name
System.Environment.UserName
System.Security.Principal.WindowsIdentity.GetCurrent().Name
Bất kỳ ý tưởng?
EDIT:
Thật vậy, như John đề cập dưới đây, vấn đề này là do Kerberos Phái đoàn.
tôi đã tìm thấy các bài viết sau đây và công cụ đi kèm rất hữu ích trong việc giải thích và giảm nhẹ này:
DelegConfig - A Tool To help resolve Kerberos authentication and delegation issues
+1 ... vừa triển khai một bộ công cụ dựa trên web ui, giao diện đó với tfs, vào "một máy khác" làm ứng dụng web trên iis. Tôi đang quan sát hành vi tương tự như được mô tả trong bài đăng này. bất kỳ cách giải quyết đã biết nào? cảm ơn trước. – culturalanomoly
Vâng. Nhấp vào liên kết "hop kép" trong câu trả lời của tôi. –