我有一个Azure Api REST,可以通过输入用户名/密码来访问。 如何从C#访问此API?
经过一点点搜索后,我发现了使用 AuthenticationContext 的问题..但它无法用于我的Authenticationcontext .AcquireToken(resource,clientId,credential);
我在哪里可以获得“资源”参数和 ClientID 。
非常感谢
答案 0 :(得分:0)
我的大部分工作都基于this post奠定了基础。
您需要先在Azure AD中创建本机应用程序,然后添加 Windows Azure服务管理API 权限。
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部分,位于域名。