Как правильно запросить область конечной точки Azure Resource Management с помощью MSAL? - PullRequest
0 голосов
/ 23 февраля 2019

Итак, я прочитал, что если вы добавите .default в конец URI ресурса в области видимости, он вернет нам правильный токен v1.При настройке protectedResourceMap для MSAL какой должна быть область действия?'https://management.azure.com/.default', похоже, не работает.Также не https://management.azure.com/user_impersonation'.

Как правильно настроить область, чтобы при запросе согласия на наше приложение они утверждали API управления Azure?

1 Ответ

0 голосов
/ 21 мая 2019

Используйте две косые черты, как это:

https://management.core.windows.net//.default

" Это потому, что ARM API ожидает косую черту в своем требовании аудитории (aud), а затем естькосая черта, чтобы отделить имя API от области."

Источник: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Adal-to-Msal

Вот полный пример:

void Main()
{
    var tenantId = "<tenantId>";
    var clientId = "<clientId>";
    var clientSecret = "<clientSecret>";

    var credentials = GetCredentials(tenantId, clientId, clientSecret);
    Console.WriteLine(credentials);
}

public static async Task<AuthenticationResult> GetCredentials(string tenantId, string clientId, string clientSecret)
{
    string authority = $"https://login.microsoftonline.com/{tenantId}/";
    IConfidentialClientApplication app;
    app = ConfidentialClientApplicationBuilder.Create(clientId)
                                              .WithClientSecret(clientSecret)
                                              .WithAuthority(new Uri(authority))
                                              .Build();

    IEnumerable<string> scopes = new List<string>() { "https://management.core.windows.net//.default" };
    var result = await app.AcquireTokenForClient(scopes)
          .ExecuteAsync();
    return result;
}

Снимок экрана объекта AuthenticationResultв LINQPad: Screenshot of the AuthenticationResult object in LINQPad

Пример кода здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon

...