使用用户名/密码连接到Azure AD

时间:2016-11-23 15:40:26

标签: c# azure authentication azure-active-directory

我有一个Azure Api REST,可以通过输入用户名/密码来访问。 如何从C#访问此API?

经过一点点搜索后,我发现了使用 AuthenticationContext 的问题..但它无法用于我的Authenticationcontext .AcquireToken(resource,clientId,credential);

我在哪里可以获得“资源”参数和 ClientID

非常感谢

1 个答案:

答案 0 :(得分:0)

我的大部分工作都基于this post奠定了基础。

您需要先在Azure AD中创建本机应用程序,然后添加 Windows Azure服务管理API 权限。

Creating AD App

ClientID 是从此应用获得的。

这是我目前用于获取可与Management SDK一起使用的令牌的代码:

string userName = "yourUserName";
string password = "yourPassword";
string directoryName = "yourDirectory.onmicrosoft.com";
string clientId = "{ClientId obtained by creating an App in the Active Directory}";
var credentials= new UserPasswordCredential(string.Format("{0}@{1}", userName, directoryName), password);
var authenticationContext = new AuthenticationContext("https://login.windows.net/" + directoryName);
var result = await authenticationContext.AcquireTokenAsync("https://management.core.windows.net/", clientID, credentials);
var jwtToken = result.AccessToken;
//Example accesing Azure Cdn Management API
string subscriptionId = "xxxx-xxxxxx-xxxx-xxxxxxx";
using (var cdn = new CdnManagementClient(new TokenCredentials(jwtToken)) { SubscriptionId = subscriptionId })
{
    //do something...
}

您的目录名称可以在Azure门户中获取> Azure AD部分,位于域名

Domain name