IDX10803: невозможно создать для получения конфигурации

В моей конфигурации есть 3 сайта: Identity Server (Idp), узел проверки подлинности Windows и мой клиентский сайт конечного пользователя. На клиентском сайте я запрашиваю контроллер, украшенный [Authorize], и Identity Server срабатывает.

Хост Windows на порту 44305, по-видимому, генерирует исключение, и сервер идентификации получает статус 500. Я могу без проблем получить доступ к URL-адресу хост-сайта Windows. Я возвращаю XML-документ

Как отлаживать и выяснять, что это за исключение или ошибка, которые останавливают этот процесс аутентификации? Я получаю исключение из 3 частей с внутренней частью, как показано ниже.

InvalidOperationException: IDX10803: Unable to create to obtain configuration from: 'https://localhost:44305/'.

Microsoft.IdentityModel.Protocols.ConfigurationManager`1.<GetConfigurationAsync>d__3.MoveNext() in ConfigurationManager.cs

Запуск Windows Host OWIN использует UseWindowsAuthenticationService

Identity Server OWIN использует AuthenticationOptions = WsFederationAuthenticationOptions

var wsFederationOptions = new WsFederationAuthenticationOptions
            {
                AuthenticationType = "windows",
                Caption = "Windows",
                SignInAsAuthenticationType = signInAsType,
                MetadataAddress = "https://localhost:44305/",
                Wtrealm = "urn:idsrv3"
            };
            app.UseWsFederationAuthentication(wsFederationOptions);
        }

Вот запросы и ответы

Request URL:https://localhost:44315/
Request Method:GET
Status Code:302 Found
Response:Location:https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=...

Request: https://localhost:16433/connect/authorize?client_id=hms2015&redirect_uri=...
Request Method:GET
Status Code:302 Found
Location:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b

Request URL:https://localhost:16433/login?signin=fde7508a6634698847c3076c9028604b
Request Method:GET
Status Code:500 Internal Server Error

У меня нет видимых проблем с SSL. С моим браузером я могу открыть все страницы с разных сайтов без предупреждения. Я добавляю свой сертификат localhost IIS Express в доверенный корневой сертификат.


person MADCookie    schedule 30.03.2016    source источник


Ответы (8)



У меня была эта проблема, и мне нужно было доверять сертификату в соответствии с Robert Muehsig answer.

Но этого самого по себе было недостаточно. Я использую аутентификацию Bearer Token Authentication. Дальнейшее копание показало, что мне нужно установить для флага DelayLoadMetadata значение true.

Итак, в моем запуске веб-API:

app.UseIdentityServerBearerTokenAuthentication(
    new IdentityServerBearerTokenAuthenticationOptions
{
    DelayLoadMetadata=true
});

После этого и изменения доверия к сертификату он начал работать. Я знаю, что это не та же конфигурация, что и исходная проблема, но во время поиска я постоянно натыкался на этот пост, поэтому решил разместить его здесь для всех, кто наткнется на него...

person SteveL    schedule 20.02.2017
comment
Спасибо за публикацию этого ответа. Работал как шарм. - person daudihus; 29.07.2017
comment
Сумасшедшие вещи - год спустя я снова обнаружил свой собственный ответ с этим хорошим комментарием, и это мне очень помогло! - person Robert Muehsig; 22.10.2018

Насколько я помню, эта ошибка возникает в основном из-за проблемы с доверием к сертификату / доступом к сети. Поскольку вы запускаете все компоненты на локальном хосте, это определенно не проблема сети. Я предполагаю, что вы работаете из среды VS Dev.

Пара вещей:

  • Попробуйте разместить компоненты на сервере IIS
  • Вместо использования localhost создайте самозаверяющий сертификат для своего хоста и попробуйте назначить свое имя хоста в качестве имени субъекта (обратите внимание: сертификат idsrv3test для подписи и самозаверяющий сертификат для хоста SSL)

Кроме того, назначьте разрешения на чтение сертификата, как описано здесь https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Certificates

Если вы все еще сталкиваетесь с этой проблемой, попробуйте отслеживать трафик через Wireshark (в этом случае Fiddler не будет работать).

person Karthik    schedule 30.03.2016
comment
Картик, я хотел бы узнать больше о мониторинге трафика. Я был бы очень признателен, если бы вы поделились веб-страницами, которые оказались полезными для изучения мониторинга. Поделись, пожалуйста. - person MADCookie; 31.03.2016
comment
@MADCookie- я предполагаю, что вам нужен мониторинг трафика WireShark. Эта ссылка дает очень краткое введение в WireShark troyhunt .com/2013/04/ (в разделе «Захват пакетов») - person Karthik; 04.04.2016

В целях тестирования я добавил приведенный ниже блок в качестве первой части промежуточного программного обеспечения в моем конвейере. Это фактически будет регистрировать исключение всякий раз, когда оно возникает. Это привело меня к выводу, что мой 500-й на самом деле был 401-м.

        appBuilder.Use(async (context, next) =>
        {
            try
            {
                await next();
            }
            catch(Exception ex)
            {
                Log.Error(ex, "OWIN error.");
            }

        });
person thekip    schedule 08.08.2016

Другой разработчик в команде помог найти проблему. На узле проверки подлинности Windows, работающем на порту 44305, отключен анонимный доступ. Когда это было включено, перенаправленный процесс снова начал работать.

К сожалению, на самом деле мы не обнаружили ошибку, но методом проб и ошибок (взломом) она была исправлена. Мой главный вопрос заключался в том, как мне отлаживать приложение OWIN, чтобы я мог видеть детали HTTP 500. Я бы хотел, чтобы журналы IdentityServer3 могли записывать ответ от хоста Win Auth. Кроме того, почему это не код ответа 401?

person MADCookie    schedule 31.03.2016
comment
В нашем случае у пользователя пула приложений IIS не было необходимых разрешений. - person shlgug; 31.07.2018

Это также может быть связано с прокси-аутентификацией. Попробуйте проверить трафик fiddler для вызовов login.microsoftonline.com:XXX и посмотрите, возвращает ли он код ошибки 407.

Если вы видите код ошибки 407, вам необходимо включить прокси-аутентификацию в web.config.

person Venkatesh Muniyandi    schedule 30.01.2017

Моя команда столкнулась со следующими проблемами: [Ошибка] Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler: при обработке сообщения возникло исключение. System.InvalidOperationException: IDX10803: невозможно получить конфигурацию из: 'https://[ваш домен сервера идентификации]/.well- известная/openid-конфигурация». ---> System.IO.IOException: IDX10804: невозможно получить документ с: 'https://[ваш сервер идентификации домен].известная/открытая-конфигурация'. ---> System.Net.Http.HttpRequestException: попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через определенный период времени, или установленное соединение не удалось, поскольку подключенный узел не ответил ---> System.Net.Sockets .SocketException: попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через определенный период времени, или сбой установленного подключения, поскольку подключенный хост не смог ответить на System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken CancellationToken) --- Конец внутренней трассировки стека исключений ---

Мы потратили много времени, чтобы выяснить причину. Наконец, просто очень простая ошибка, в среде UAT настройка файла hosts была неправильной в «C:\Windows\System32\drivers\etc». Домены, определенные в файле hosts, не соответствуют привязке доменов в IIS.

person ChinaHelloWorld    schedule 29.10.2018

В моем случае я был тупым и остановил хост IdentityServer. Как только я запустил его, другие службы снова смогли получить метаданные, которые они искали.

person Noah Stahl    schedule 10.04.2020