如何使用API​​连接到VSO时提示用户输入凭据?通过VssAadCredential

时间:2015-11-16 16:30:34

标签: visual-studio-2015 azure-devops tfs-sdk

我正在创建一个自定义应用程序,以便在线连接到Visual Studio,由WAAD支持 - 我使用NuGet包(https://www.visualstudio.com/en-us/integrate/get-started/client-libraries/dotnet

  • Microsoft.TeamFoundationServer.Client
  • Microsoft.VisualStudio.Services.InteractiveClient

这是我的代码...(传递用户名和密码,但我想提示)

        VssAadCredential aadcred = new VssAadCredential();
        VssCredentials cred = new VssCredentials(aadcred);
        cred.PromptType = CredentialPromptType.PromptIfNeeded;

        Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient buildClient =
            new Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient(new Uri("https://myproject.visualstudio.com/DefaultCollection/"), cred);

        var result = buildClient.GetBuildsAsync("My Project");

        foreach (var item in result.Result)
        {
            Debug.WriteLine(item.Definition.Name);
        }

如果用户未经过身份验证,我希望Windows Azure Active Directory提示符如下所示......

enter image description here

我怎样才能做到这一点?非常感谢

1 个答案:

答案 0 :(得分:1)

不,VssAadCredential类不支持交互式流程以提示提供用户名和密码。你必须传递用户名和密码。

以下是检查对象浏览器中的VssAadCredential类时所得到的内容(引用它作为参考):

要点: 目前,如果不重现VssClientCredentials使用的逻辑,是否允许来自凭证本身的提示是不可能的。由于这是一个通过ADFS使Windows集成身份验证与AAD协同工作的停止间隙解决方案,现在这个类只支持那个非交互流。我们需要评估我们希望在此旧版堆栈中投入多少资金,而不是建议人们转移到VssConnect API以满足将来的身份验证需求。