Итак, я прочитал, что если вы добавите .default в конец URI ресурса в области видимости, он вернет нам правильный токен v1.При настройке protectedResourceMap для MSAL какой должна быть область действия?'https://management.azure.com/.default', похоже, не работает.Также не https://management.azure.com/user_impersonation'.
Как правильно настроить область, чтобы при запросе согласия на наше приложение они утверждали API управления Azure?
Используйте две косые черты, как это:
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:
Пример кода здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon