. net базовый веб-API не проходит аутентификацию даже после генерации токена носителя из Azure AD с использованием AzureADDefaults.BearerAuthenticationScheme - PullRequest
0 голосов
/ 27 апреля 2020

Я разрабатываю базовый веб-API. net и пытаюсь аутентифицировать его с помощью AZURE аутентификации AD. Я придерживаюсь следующих конфигураций: :

app.UseAuthentication();

3. В app.settings. json Я добавил следующие свойства:

 "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "ClientId": "<MY client ID>",
    "TenantId": "<My Tenant ID>",
    "Issuer": "https://login.microsoftonline.com/<My Tenant ID>/v2.0",
    "Domain": "<My Domain>",
    "ConfigView": "MVC",
    "CallbackPath": "/signin-oidc",
    "ClientSecret": "<My Client Secret>"
  }
Я добавил атрибут Authorize поверх моего контроллера Я сгенерировал свой токен на предъявителя, используя следующий код:
 static void Main(string[] args)
        {
            Program obj = new Program();
            IRestResponse ARMtokenResponse = obj.GetARMAuthToken();
            dynamic response = JsonConvert.DeserializeObject(ARMtokenResponse.Content);
            Console.WriteLine(response["access_token"].ToString());
            Console.ReadKey();
        }
        private IRestResponse GetARMAuthToken()
        {
            var client = new RestClient("https://login.microsoftonline.com/<MY TENANT ID>/oauth2/token"); //tenantid
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);
            request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
            request.AddParameter("grant_type", "client_credentials");
            request.AddParameter("client_id", "<My Client ID>");
            request.AddParameter("client_secret", "<MY CLIENT SECRET>");
            request.AddParameter("resource", "https://management.azure.com/");
            IRestResponse response = client.Execute(request);
            return response;
        }
Далее я использую этот токен, сгенерированный в приложении почтальон / консоль, для вызова API, но получаю сообщение об ошибке в заголовке ответа: Ошибка носителя = "invalid_token", error_description = "Аудитория недействительна"

Пожалуйста, помогите мне в этом. Я застрял здесь

1 Ответ

1 голос
/ 27 апреля 2020

В ваших кодах есть несколько проблем:

  1. Вы должны приобрести токен доступа для веб-API, а не токен доступа для Azure Rest API (https://management.azure.com/), ваш веб-интерфейс не может проверить Azure токен доступа API доступа.

  2. При получении токена используется конечная точка Azure AD V1.0, но при проверке токена вы используете конечную точку Azure AD V2.0 (Issuer).

Для Azure AD V1.0 вы можете обратиться к примеру кода: Позвонить веб-API в ASP. NET Базовом веб-приложении с использованием Azure AD .

Для Azure AD V2.0 вы можете обратиться к примерам кода: Включить Веб-приложения для входа в систему пользователей и вызова API-интерфейсов с помощью платформы удостоверений Microsoft для разработчиков и следования сценарию 4-WebApp-your-API.

...