Как получить токен доступа из Azure AD для TokenCredentials? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь подключиться к своей учетной записи Azure, и для этого мне нужно создать объект TokenCredentials, которому в качестве параметра нужен токен доступа. Но у меня возникают проблемы с получением этого токена доступа.

Я пытался сделать это, поскольку этот пример указывает: https://github.com/Azure-Samples/azure-batch-samples/blob/master/CSharp/AccountManagement/Program.cs

Вот код, который я пытаюсь запустить:

public static async Task<ServiceClientCredentials> CreateTokenCredentialsAsync()
{
    var clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
    var redirectUri = "https://myredirecturi.com";
    var authorityUri = "https://login.microsoftonline.com/common";
    var resourceUri = "https://management.core.windows.net/";

    var platformPrameters = new PlatformParameters(PromptBehavior.Auto);

    var authContext = new AuthenticationContext(authorityUri);
    AuthenticationResult authResult = await authContext.AcquireTokenAsync(
        resourceUri,
        clientId,
        new Uri(redirectUri),
        platformPrameters);

    var token = authResult.AccessToken;

    ServiceClientCredentials creds = new TokenCredentials(authResult.AccessToken);

    return creds;
}

И я получаю следующее исключение:

Invalid resource.
The client has requested access to a resource which is not listed in the requested permissions in the client's application registration.
Client app ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx(<my registered app name>).
Resource value from request: https://management.core.windows.net/.
Resource app ID: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy. 
List of valid resources from app registration: ...

Что мне нужно сделать, чтобы эта работа заработала и получить токен доступа?

1 Ответ

2 голосов
/ 30 сентября 2019

Звучит так, как будто вы не добавили API управления службами Azure в свои необходимые разрешения при регистрации приложения в Azure AD.

Сначала найдите регистрацию приложения в Azure AD. Затем перейдите к разрешениям API. Нажмите Добавить разрешение.

Затем нажмите Управление службами Azure.

Click Azure Service Management

Выберите user_impersonation в разделе «Делегированные разрешения» и нажмите «Добавить разрешения».

Choose user_impersonation

Теперь у вас должна получиться возможность отобразить диалоговое окно входа в систему. Он попросит вас дать согласие на доступ к API ARM, как и вы. Если вы хотите избежать этих запросов и разрешить приложению вызывать API-интерфейс ARM как любой зарегистрированный пользователь в вашем клиенте, вы можете щелкнуть Предоставить согласие администратора для имени клиента на вкладке разрешений API (если вы являетесь администратором).

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