Сетевая ошибка на сайте Blazor WebAssembly с ASP.Net Основная идентификационная ссылка для входа в систему

#asp.net #identityserver4 #blazor #blazor-webassembly

#asp.net #identityserver4 #blazor #blazor-webassembly

Вопрос:

В моей BlazorWebAssembly ASP.NET Тестовый сайт Core Identity (.NET 5.0 RC1), при попытке входа в систему я получаю следующую ошибку.

При попытке входа в систему возникла ошибка: «Сетевая ошибка»

Я уже установил appsettings OIDC следующим образом:

 {
  "SiteName": "MyProject",
  "oidc": {
    "Authority": "https://167.172.118.170/",
    "ClientId": "MyProject",
    "DefaultScopes": [
      "openid",
      "profile"
    ],
    "PostLogoutRedirectUri": "/",
    "RedirectUri": "https://167.172.118.170/authentication/login-callback",
    "ResponseType": "code"
  }
}
  

Почему он не может подключиться?

Тестовый сайт находится на http://167.172.118.170 / и код можно найти в https://github.com/jonasarcangel/BlazorLoginNetworkErrorIssue

Ответ №1:

К настоящему времени ясно, что Blazor использует внутренний URL http://localhost:5008 -адрес в качестве полномочий вместо внешнего URL-адреса http://167.172.118.170/

Когда клиент пытается подключиться http://localhost:5008/.well-known/openid-configuration , возникает ошибка: соединение отклонено…

На самом деле клиент должен использовать этот URL: http://167.172.118.170/.well-known/openid-configuration , но это не так, поскольку значение полномочий определяется Blazor.

Если вы введете URL http://167.172.118.170/.well-known/openid-configuration -адрес в адресной строке браузера, вы увидите всю информацию о конфигурации поставщика удостоверений. Действительно, http://167.172.118.170/ это авторитет. Но, как вы видели, установка полномочий для этого URL-адреса в файле appsettings.json была просто проигнорирована, и вместо этого использовался внутренний URL-адрес.

Как это решить? Мы должны сказать Blazor использовать не внутренний URL, а внешний…

Предлагаемые попытки:

В ConfigureService класса запуска проекта веб-сервера измените этот код:

 services.AddIdentityServer()
           .AddApiAuthorization<ApplicationUser, ApplicationIdentityDbContext> 
            ();
  

Для

 services.AddIdentityServer(options =>
            {
                options.IssuerUri = "https://167.172.118.170/";
               
            })
              .AddApiAuthorization<ApplicationUser, 
                                ApplicationIdentityDbContext>(); 
  
  1. Используйте промежуточное программное обеспечение ForwardedHeaders. Смотрите Этот пример о том, как это сделать.

  2. Придерживайтесь вышеуказанного… Проблема здесь, а не где-то еще.

Удачи…

Комментарии:

1. Это изменение сработало: github.com/jonasarcangel/BlazorLoginNetworkErrorIssue/commit/… Теперь проблема в том, что он использует localhost для перенаправления на экран входа в систему.

2. Возможно, вам также следует изменить: client => client. BaseAddress = новый Uri(» 167.172.118.170/» )); вместо текущего определения. необходимо внести два изменения. Почему вы используете «http» вместо https?

3. Я попробовал. Не сработало. Возможно, требуется какая-то другая конфигурация.

4. Как создается этот файл? 167.172.118.170/.well-known/OpenID-configuration Как я могу настроить результат?

5.Реализованы все предложения, которые вы предоставили, но все еще возникает проблема. github.com/jonasarcangel/BlazorLoginNetworkErrorIssue/blob/… github.com/jonasarcangel/BlazorLoginNetworkErrorIssue/blob/…

Ответ №2:

Я просто тестирую и URL http://167.172.118.170/_configuration/BlazorWorld.Web.Client возвращает

 {
    "authority": "http://localhost:5008",
    "client_id": "BlazorWorld.Web.Client",
    "redirect_uri": "http://localhost:5008/authentication/login-callback",
    "post_logout_redirect_uri": "http://localhost:5008/authentication/logout-callback",
    "response_type": "code",
    "scope": "BlazorWorld.Web.ServerAPI openid profile"
}
  

Затем приложение попытается подключиться к http://localhost:5008/.well-known/openid-configuration :

Таким образом, развернутые настройки приложений, вероятно, не являются хорошими.

введите описание изображения здесь

Комментарии:

1. Настройки приложений теперь корректны после развертывания всего с нуля. Однако я все еще вижу ошибку.

2. 167.172.118.170/_configuration/MyProject.Web.Client

3. Хорошо, но 167.172.118.170/_configuration/BlazorWorld.Web.Client по-прежнему возвращает тот же документ