Получение токена Active Directory Azure - PullRequest
0 голосов
/ 20 октября 2018

У меня есть учетная запись 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"));

Здесь я получил еще одно исключение

'Клиент' newaduser@ xyzgmail.onmicrosoft.com 'с идентификатором объекта' aaa-aaa-aaa-aaa 'не имеет полномочий для выполнения действия' Microsoft.Resources / subscription / resourcegroups / write 'over scope' / subscription / XX-XX-XX-YY-YY-YY / resourcegroups / myresgroup77777 '.'

1 Ответ

0 голосов
/ 20 октября 2018

Не знаю, почему вы получаете первую ошибку, но вторая ошибка связана с тем, что вошедший в систему пользователь не имеет разрешения на выполнение операции (как указано в сообщении об ошибке).

При назначенииразрешение на выполнение Windows Azure Service Management API фактически назначается приложению, которое принимает личность вошедшего в систему пользователя.

Чтобы выполнить операцию Create Resource Group в подписке Azure, этот пользователь должен быть в роли, позволяющей выполнить эту операцию.Вы можете попробовать назначить этому пользователю встроенную роль Contributor на уровне подписки Azure.

Также, что касается использования login.windows.net v / s login.microsoftonline.com, рекомендуется использовать последнее.Когда вы используете login.windows.net, он автоматически перенаправляется на login.microsoftonline.com.Использование login.microsoftonline.com сэкономит вам одно перенаправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...