Вопрос:

Ошибка IDX10803 и IDX10804 в Azure AD

azure asp.net-web-api

839 просмотра

1 ответ

1031 Репутация автора

Я создал веб-API в ASP.NET Core 2, и он защищен с помощью Azure AD. Запросы работают нормально в моей среде разработки. Однако, когда я публикую API в IIS и передам заголовок авторизации в запросе, я получаю следующую ошибку:

fail: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[3]
  Exception occurred while processing message.

System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'https://login.microsoftonline.com/xxxx/.well-known/openid-configuration'. ---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'https://login.microsoftonline.com/xxxx/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A connection with the server could not be established

Что я делаю неправильно? Я могу просматривать URL в браузере успешно.

Автор: Mayank Источник Размещён: 10.11.2017 06:02

Ответы (1)


0 плюса

1031 Репутация автора

Решение

Я понял. Это было из-за настройки прокси для доступа в интернет. Поскольку ASP.NET Core не получает настройки прокси-сервера из области system.net файла web.config, идеальным решением было создание промежуточного программного обеспечения для работы в качестве прокси.

У меня не хватало времени. Поэтому я создал нового пользователя и вошел на сервер с этим новым пользователем и настроил параметры прокси в настройках Internet Explorer. Затем я настроил пул приложений в IIS для работы под этим именем пользователя. Задача решена!

Правильный ответ - добавить прокси к запросу метаданных, который использует ADAL BackchannelHttpHandler. Вы можете сделать это так:

  public void Configure(string name, JwtBearerOptions options)
                {
                    options.BackchannelHttpHandler = new HttpClientHandler
                    {
                        UseProxy = true,
                        Proxy = new WebProxy
                        {
                            Address = new Uri($"{appSettings.InternetProxyUrl}:{appSettings.InternetProxyPort}"),
                            UseDefaultCredentials = true
                        }
                    };
}
Автор: Mayank Размещён: 10.11.2017 08:25
Вопросы из категории :
32x32