C# 获取用户凭据并使用这些凭据访问网络服务的服务器应用程序

C# 获取用户凭据并使用这些凭据访问网络服务的服务器应用程序,c#,asp.net-mvc,tfs,iis-7.5,C#,Asp.net Mvc,Tfs,Iis 7.5,我对IIS有点陌生,不能100%肯定这是可能的。我正在编写一个C#应用程序,它需要获取用户的网络凭据,然后使用这些凭据连接到TFS。我能做一件或另一件事,但决不能同时做两件事 要获取访问站点的用户凭据,我必须使用NetworkService作为AppPool的标识,并调用credentials=System.Web.HttpContext.Current.User.Identity.Name。我需要获取用户用户名的原因是为了找出他们以后可以使用item.VersionControlServer.

我对IIS有点陌生,不能100%肯定这是可能的。我正在编写一个C#应用程序,它需要获取用户的网络凭据,然后使用这些凭据连接到TFS。我能做一件或另一件事,但决不能同时做两件事

要获取访问站点的用户凭据,我必须使用NetworkService作为AppPool的标识,并调用
credentials=System.Web.HttpContext.Current.User.Identity.Name
。我需要获取用户用户名的原因是为了找出他们以后可以使用
item.VersionControlServer.GetEffectivePermissions(credentials,item.ServerItem)
在TFS中访问哪些项目

要连接到TFS,我必须将用户凭据作为应用程序池的标识,或者通过调用
RegisteredTfsConnections.GetConfigurationServer(“服务器”)


我需要一种方法来使用应用程序获得的凭据访问TFS,或者需要一种方法来创建具有“类似网络服务”的新用户能够获取用户的凭据,然后授予此用户访问TFS的权限。

您实际上遇到了一种称为“双跳身份验证”的问题,如果不确保您拥有Kerberos令牌,您将无法继续


这是相当复杂的,但一旦你有了它,并运行你的代码将刚刚开始工作。实现这一点的唯一其他方法是实际拥有用户的用户名和密码

我不知道并且最近发现,如果您将IIS设置为以用户身份运行,则可以在IIS>(选择站点)>身份验证设置中启用Windows身份验证,并使用
HttpContext.Current.user.Identity.Name
获取当前登录用户