在TFS 2010上进行身份验证

时间:2010-05-13 19:06:11

标签: tfs tfs2010

我在MS Team Foundation Server上作为特定用户进行身份验证时遇到问题。在旧版本中,它看起来像:

teamFoundationCredential = new System.Net.NetworkCredential("<USERNAME>", "<PASSWORD>", "<DOMAIN>");

TeamFoundationServer tfs = new TeamFoundationServer("http://mars:8080/", teamFoundationCredential);

有人可以告诉我2010版的等值。到目前为止,我有:

ICredentialsProvider cred = null;

tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://asebeast.cpsc.ucalgar.ca:8080/tfs/DefualtCollection"));

tfs.EnsureAuthenticated();

由于

4 个答案:

答案 0 :(得分:13)

对于TFS 2010,请使用以下内容:

TfsTeamProjectCollection collection = new TfsTeamProjectCollection(
        new Uri("http://asebeast.cpsc.ucalgar.ca:8080/tfs/DefaultCollection",
        new System.Net.NetworkCredential("domain_name\\user_name", "pwd"));
collection.EnsureAuthenticated();

答案 1 :(得分:4)

我一直有同样的问题。以上解决方案对我不起作用,实在无法弄清楚原因。我一直得到一个演员异常。 花了一天时间试图解决这个问题 - 所以我认为我会分享我目前解决问题的方法。 我创建了自己的内部类来实现ICredentialsProvider - 如下所示:

private class MyCredentials : ICredentialsProvider
{
    private NetworkCredential credentials;
    #region ICredentialsProvider Members
    public MyCredentials(string user, string domain, string password)
    {
        credentials = new NetworkCredential(user, password, domain);
    }

    public ICredentials GetCredentials(Uri uri, ICredentials failedCredentials)
    {
       return credentials;
    }

    public void NotifyCredentialsAuthenticated(Uri uri)
    {
        throw new NotImplementedException();
    }

    #endregion
}

然后我实例化它并将其传递到下面:

MyCredentials credentials = new MyCredentials(UserName, Password, Domain);
TfsTeamProjectCollection configurationServer =
    TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
        new Uri(tfsUri), credentials);

请注意,我还没有实现NotifyCredentialsAuthenticated - 不确定这实际上是做什么的,所以留下了NotImplementedException,所以我可以捕获它的调用,到目前为止还没有发生。现在已成功连接到TFS。

答案 2 :(得分:0)

我使用这种方法连接到旧的TFS 2008服务器时遇到了一些问题,但解决我问题的方法非常简单:

首先我将TFS Url定义为:

private const string Tfs2008Url = @"http://servername:8080/tfs/";
static readonly Uri Tfs2008Uri = new Uri(Tfs2008Url);

URL中使用的路径是我们在通过VisualStudio连接时使用的路径,因此我认为这在API调用中必须相同,但是当我尝试使用以下身份验证时,我得到了TF31002 / 404错误:

var collection = new TfsTeamProjectCollection(Tfs2008Uri,new NetworkCredential("AdminUser","password","domain_name"));
collection.EnsureAuthenticated();

但是当我将Url更改为TFS根目录时,它验证了OK!

private const string Tfs2008Url = @"http://servername:8080/";
static readonly Uri Tfs2008Uri = new Uri(Tfs2008Url);

不知道这是否对任何人有所帮助,但它确实为我做了诀窍!

答案 3 :(得分:0)

这对我来说非常有用:

_tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
_tfs.ClientCredentials = new TfsClientCredentials(new WindowsCredential(new NetworkCredential("myUserName", "qwerty_pwd", "myDomainName")));
_tfs.EnsureAuthenticated();