0

我制作了一个将工作项插入 tfs 2010server 的网络表单。在 tfs 服务器上,我需要能够查看哪个用户创建了工作项。如果我在我的机器上本地运行 webform 代码,这是可行的,因为我的机器在 tfs 服务器上登录到我的用户。但是在服务器上部署代码后,如果我没有像这样在我的凭据中硬编码,我会收到(401)未经授权的错误消息

TfsConfigurationServer configurationServer = new TfsConfigurationServer(configurationServerUri, new NetworkCredential(user, pwd, domain));

(在本地以下代码有效)

TfsConfigurationServer configurationServer = new TfsConfigurationServer(configurationServerUri);

是否可以告诉网络服务器哪个用户登录到访问网络表单的机器,或者当他/她提交网络表单时我可以提示用户输入用户名/密码吗?

谢谢任何帮助!

4

1 回答 1

0

您需要做几件事并解决此问题

首先很可能您的网站允许匿名身份验证。这意味着用户可以不受任何限制地访问您的网站,并且不需要提供任何信息。网络服务器不知道他们是谁。这将需要禁用,因为您需要他们的信息。您的网络应用程序将尝试以网络服务器身份连接到 tfs - 运行应用程序池的专用帐户或计算机帐户。

http://technet.microsoft.com/en-us/library/cc770966(v=ws.10).aspx

最简单的方法是为您的网站启用基本身份验证,这将要求用户提供用户名和密码,缺点是此方法以 base64 纯文本传输数据,因此您的频道必须是安全的 http://technet.microsoft.com /en-us/library/cc772009(v=ws.10).aspx 表单身份验证将允许您使用自定义表单从用户那里收集登录信息,并自行验证,但其工作方式与基本身份验证非常相似

http://technet.microsoft.com/en-us/library/cc753252(v=ws.10).aspx

如果客户端是您域中的用户并且应用程序在 Intranet 中使用,则最好的选择是使用 Windows 身份验证,它将尝试自动从域中获取用户身份,如果失败将发出弹出窗口。根据您的服务器设置方式,使其工作可能就像启用它(tfs 和您的应用程序在同一台服务器上)一样简单,或者需要为 kerberous 配置您的域控制器。

http://technet.microsoft.com/en-us/library/cc754628(v=ws.10).aspx

一旦用户通过身份验证,您必须让网络服务器在您的代码调用 tfs.xml 时模拟他们。复杂性再次取决于您的设置。

http://technet.microsoft.com/en-us/library/cc730708(v=ws.10).aspx

或者,您可以使用 tfs 模拟来获得类似的结果,例如,如果您在 tfs 中没有每个用户连接的用户,而是想要模拟和 ClientCompany、Project 或 Team 帐户,也可以使用此方法

http://blogs.msdn.com/b/paulking/archive/2010/11/04/using-the-new-tfs-2010-impersonation-apis.aspx

于 2013-08-15T16:02:09.413 回答