我制作了一个将工作项插入tfs 2010server的webform。在tfs服务器上,我需要能够看到哪个用户创建了工作项。如果我在我的机器上本地运行webform代码,这是有效的,因为我的机器在tfs服务器上登录到我的用户。但是在服务器上部署代码后,如果我没有像我这样在我的凭据中进行硬编码,我会得到(401)未经授权的错误消息
TfsConfigurationServer configurationServer = new TfsConfigurationServer(configurationServerUri, new NetworkCredential(user, pwd, domain));
(本地下面的代码有效)
TfsConfigurationServer configurationServer = new TfsConfigurationServer(configurationServerUri);
是否可以告诉网络服务器哪些用户登录到访问网络表单的计算机,或者是否可以在他/她提交网络表单时提示用户输入用户名/密码?
thx任何帮助!
答案 0 :(得分:0)
您需要做几件事并解决此问题
首先,您的网站最有可能允许匿名身份验证。意味着用户可以不受任何限制地访问您的网站,并且不需要提供任何信息。网络服务器不知道他们是谁。这需要被禁用,因为你的问题需要他们的信息。您的Web应用程序将尝试连接到Web服务器标识下的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时让Web服务器模拟它们。复杂性又取决于您的设置。
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