asp.net Идентификация личности .net core 2.1 - PullRequest
0 голосов
/ 01 ноября 2018

У меня проблема с приложением MVC .net core 2.1, которое работает на Linux-блоках с использованием kestrel за веб-сервером nginx. Эта среда имеет 2 веб-сервера за балансировщиком нагрузки.

Проблема в том, что файл cookie .AspNetCore.Identity.Application используется для аутентификации. Я могу пройти проверку подлинности и перенаправить на контроллер, украшенный

[Авторизоваться]

атрибут (иногда). Однако при следующем запросе cookie-файл ушел, и я получаю 401. Когда мы вынимаем один сервер из микса и пересылаем весь трафик на один сервер, все работает как положено.

При аутентификации с помощью Forms ту же проблему можно решить, указав ключ компьютера. Что эквивалентно ядру .net, использующему идентичность? Я нашел несколько ссылок, которые прошли через мою голову. Они упоминают, что делают что-то вроде этого:

 services.Configure<ForwardedHeadersOptions>(options =>
 {
     options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
 });

Я понятия не имею, если это решит проблему, и я не хочу пробовать вещи, не зная, что они делают.

1 Ответ

0 голосов
/ 02 ноября 2018

Я подозреваю, что ваш опыт связан с защитой данных.

Проверка подлинности файлов cookie ASP.NET Core использует уровень защиты данных для шифрования и дешифрования данных, хранящихся в файлах cookie. По умолчанию на каждом компьютере создается локальный ключ, то есть они не могут расшифровать файлы cookie, созданные на другом компьютере, как указано в официальной документации 1004 *.

.

Я предлагаю вам перейти на страницу документации конфигурации защиты данных и оценить свои возможности. Одним из них является хранение ключей на общем ресурсе UNC и шифрование их с помощью сертификата (все ссылки в этом параграфе ссылаются на различные разделы одной и той же страницы).

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