Я сделал «Expose a API» в Azure, но не могу получить токен для этой области клиентской программе - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь создать WebAPI и хочу использовать область действия, чтобы ограничить разрешения для приложений других клиентов. Я создал область «BuildingAccess» на блейде Expose a API и добавил другое клиентское приложение в список авторизованных с этой областью. Однако, когда я использую клиентскую программу, чтобы попытаться получить токен с этой областью, я получаю ошибку «AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid.»

 IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create("removed")
            .WithTenantId("removed")
            .WithClientSecret(ClientSecret)
            .Build();

        List<string> scopes = new List<string>();
        scopes.Add(".default");
        scopes.Add("https://localhost:44371/BuildingAccess");

        AuthenticationResult result = null;
        try
        {
            result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Token acquired \n");
            Console.ResetColor();
        }
        catch (MsalServiceException ex)
        when (ex.Message.Contains("AADSTS70011"))
        {
            // Invalid scope. The scope has to be of the form "https://resourceurl/.default"
            // Mitigation: change the scope to be as expected
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Scope provided is not supported");
            Console.ResetColor();
        }

Единственный формат, который, кажется, работает, это когда область установлена ​​на https://localhost: 44371 / .default . Все остальные комбинации ниже, где я добавляю область BuildingAccess, завершаются с ошибкой ниже для различных форматов, которые я пробовал.

  • Область api://333333-2222-1111-0000-aaaaaaaaaaaaa/BuildingAccess https://localhost:44371/.default недопустима.
  • Область действия api://333333-2222-1111-0000-aaaaaaaaaaaaa/.default api://333333-2222-1111-0000-aaaaaaaaaaaaa/BuildingAccess недействительна.
  • Область действия .default BuildingAccess недействительна.
  • Область действия BuildingAccess недействительна.
  • Область действия api://333333-2222-1111-0000-aaaaaaaaaaaaa/BuildingAccess
  • Область действия https://localhost:44371/BuildingAccess недопустима.

Если тот, который работает https://localhost:44371/.default, то на моей стороне сервера есть ошибка из-за сбоя

Исключение: «Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException» в Microsoft.IdentityModel.Tokens.dll

, и я получаю несанкционированный ответ на клиенте.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Проблема в том, что мне нужно разрешение администратора для доступа приложений к приложениям. Это ограниченное действие для арендатора Azure, на котором я работаю, поэтому я не смог этого сделать.

0 голосов
/ 23 апреля 2020

1.Вы должны ввести правильный диапазон форматов, убедитесь, что вы используете следующий формат: api: // {Your-Application-ID} /your_scope_name.

2. Затем вы должны предоставить разрешения для API и выберите администратора, чтобы согласиться. enter image description here

...