Asp. net core oid c signin-oid c Конечная точка запускается дважды с помощью POST и GET во второй раз - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть 1 настройка сервера с IIS и nginx обратный прокси сверху и TLS на нем. Asp. net Базовое приложение и служба идентификации удостоверения личности развернуты в IIS.

Проблема заключается в том, что, судя по журналам, после успешной проверки подлинности POST-запроса, который происходит от ID-сервера к конечной точке моего приложения '/ signin-oid c', что вполне нормально, по какой-то причине есть еще один запрос GET на тот же конец вместо перенаправления на домашнюю страницу. Что сбрасывает предыдущее состояние аутентификации => пользователь не может быть аутентифицирован с ошибкой «Ошибка корреляции». Это начало происходить после того, как мы переместили настройку TLS из IIS в nginx.

2020-02-16 16:01:36.492 +03:00 [INF] Request starting HTTP/1.0 POST http://myapp.com/signin-oidc application/x-www-form-urlencoded 1771    
2020-02-16 16:01:36.549 +03:00 [INF] AuthenticationScheme: Cookies signed in.
2020-02-16 16:01:36.550 +03:00 [INF] Request finished in 57.7199ms 302 
2020-02-16 16:01:37.655 +03:00 [INF] Request starting HTTP/1.0 GET http://myapp.com/signin-oidc  
2020-02-16 16:01:37.657 +03:00 [WRN] .AspNetCore.Correlation. state property not found.
2020-02-16 16:01:37.657 +03:00 [INF] Error from RemoteAuthentication: Correlation failed..

Вот моя конфигурация аутентификации клиентского приложения:

services.AddAuthentication(options =>
                {
                    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
                })
                .AddCookie()
                .AddOpenIdConnect(options =>
                {
                    options.SignInScheme = "Cookies";

                    options.Authority = Configuration["IdentityServiceUrl"];
                    options.RequireHttpsMetadata = !_env.IsDevelopment();

                    options.ClientId = "web.app";
                    options.SaveTokens = true;
                    options.Scope.Add("email");
                });

После успешной проверки подлинности POST oid c middleware возвращает 302 "https://myapp.com" для перенаправления на домашнюю страницу приложения. Так что кажется, что в какой-то момент он снова превращается в «http://myapp.com/signin-oidc». Есть идеи, что я пропускаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...