Я использую ядро dotnet для создания приложения, которое выполняется в кластере Kubernetes на хостах Linux. Когда я тестировал, он заметил получение исключений при проверке токенов CSRF, это имеет смысл, так как я не редактировал машинный ключ, чтобы быть тем же самым на каждом экземпляре. Когда я начал устанавливать машинный ключ в web.config, я заметил, что это больше не будет работать в .Net Core.
Как теперь используется API DataProtection, машинный ключ больше не работает. Я попытался реализовать api в своем приложении, но когда я прочитал, мне нужно было бы использовать общий сетевой ресурс для обмена ключами между всеми экземплярами, я был ошеломлен. Разумеется, должен быть более простой (и лучший) способ достичь этого, не полагаясь на долю, которая должна быть онлайн-права?
Я попытался установить следующее в классе Startup в методе ConfigureServices:
services.AddDataProtection().SetApplicationName("DockerTestApplication");
Я как-то ожидал, что ключи будут сгенерированы с использованием имени приложения, но это не решило проблему.
Я нашел несколько интересных документов, которые используют код, который больше не будет компилироваться, я думаю, что Microsoft изменила некоторые вещи:
Кто-нибудь знает решение этой проблемы, которое также будет работать в Linux и может делиться токенами по сети между экземплярами?
Спасибо заранее!