【问题标题】:Server application that obtains user credentials and access network services using those credentials获取用户凭据并使用这些凭据访问网络服务的服务器应用程序
【发布时间】:2014-05-23 14:13:44
【问题描述】:

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

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

要连接到 TFS,我必须将用户凭据作为 AppPool 的身份或通过调用 RegisteredTfsConnections.GetConfigurationServer("server"); 来授予 NetworkService 对 TFS 的访问权限(这不会发生)

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

【问题讨论】:

    标签: c# asp.net-mvc tfs iis-7.5


    【解决方案1】:

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

    它对configure Kerberos 来说相当复杂,但一旦你启动并运行它,你的代码就会开始工作。实现此目的的唯一其他方法是实际拥有用户的用户名和密码。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多