我有一个Azure帐户,现在我正试图在控制台应用程序中获取令牌以管理资源(即创建资源组等):
string userName = "xyz@gmail.com";
string password = "XXXXXXXXX";
string directoryName = "xyzgmail.onmicrosoft.com";
string clientId = "guid-of-registered-application-xxx";
var credentials = new UserPasswordCredential(userName, password);
var authenticationContext = new AuthenticationContext("https://login.windows.net/" + directoryName);
var result = await authenticationContext.AcquireTokenAsync("https://management.core.windows.net/", clientId, credentials);
在我有 AcquireTokenAsync 通话中
Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: 'accessing_ws_metadata_exchange_failed:正在访问WS元数据交换 失败了
有人可以帮忙吗?
更新:我如何尝试在新创建的用户下创建资源组
var jwtToken = result.AccessToken;
string subscriptionId = "XX-XX-XX-YY-YY-YY";
var tokenCredentials = new TokenCredentials(jwtToken);
var client = new ResourceManagementClient(tokenCredentials);
client.SubscriptionId = subscriptionId;
var rgResponse = await client.ResourceGroups.CreateOrUpdateWithHttpMessagesAsync("myresgroup77777",
new ResourceGroup("East US"));
这里我还有另一个例外
“具有对象ID的客户端'newaduser@xyzgmail.onmicrosoft.com” 'aaa-aaa-aaa-aaa'无权执行操作 范围上的“ Microsoft.Resources / subscriptions / resourcegroups / write” '/ subscriptions / XX-XX-XX-YY-YY-YY / resourcegroups / myresgroup77777'。'
答案 0 :(得分:0)
不确定为什么会出现第一个错误,但是第二个错误是因为已登录的用户没有执行操作的权限(如错误消息中所述)。
当您分配执行Windows Azure Service Management API
的权限时,它实际上已分配给采用已登录用户身份的应用程序。
为了在Azure订阅中执行Create Resource Group
操作,该用户必须具有允许执行此操作的角色。您可以通过在Azure订阅级别为该用户分配内置Contributor
角色来尝试。
此外,关于使用login.windows.net
v / s login.microsoftonline.com
,建议您使用后者。使用login.windows.net
时,它会自动重定向到login.microsoftonline.com
。使用login.microsoftonline.com
将为您节省一个重定向。