#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>();
-
Используйте промежуточное программное обеспечение ForwardedHeaders. Смотрите Этот пример о том, как это сделать.
-
Придерживайтесь вышеуказанного… Проблема здесь, а не где-то еще.
Удачи…
Комментарии:
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 по-прежнему возвращает тот же документ