是否可以在控制台应用程序中使用AzureAD身份验证?

时间:2017-05-14 16:52:23

标签: .net azure console-application azure-active-directory

我们的想法是让它像Azure Powershell一样工作,即弹出标准的Active Directory身份验证对话框,输入我的凭据,AzureAD执行其操作,然后控制台应用程序可以访问某个Web服务。

这可能吗? 它不应该那么难,但我找不到任何例子。

查看WPF示例,我看到它在app.config中设置了一个客户端ID。这真的有必要吗?我的意思是,单页的js应用程序也没有在AD上注册,是吗?

1 个答案:

答案 0 :(得分:1)

事实上,任何客户端应用程序都应该在AAD中注册。

控制台应用也必须在Azure AD中注册,因此您将拥有客户端ID和客户端重定向网址,但没有客户端密钥。然后以下代码应该起作用:

void Main()
{
    var clientId = "client-GUID";
    var clientUrl = new Uri("redirect-url");  //can be anything starting with localhost
    var tenant = "name of your AAD tenant";
    string authority = "https://login.windows.net/" + tenant;

    string resource = "https://outlook.office365.com";  ///put id or url of resource you're accessing

    AuthenticationContext authenticationContext = new AuthenticationContext(authority, false);

    Console.WriteLine("Trying to acquire token");

    var pp = new PlatformParameters(PromptBehavior.Auto); //this brings web prompt
    var token = authenticationContext.AcquireTokenAsync(resource, clientId, clientUrl, pp, UserIdentifier.AnyUser).Result;
    Console.WriteLine("Got the token: {0}", token.AccessToken);
}