Identityserver4 Войти ПодтвердитьAntiForgeryToken - PullRequest
0 голосов
/ 04 мая 2019

У меня работает identityserver4, но я столкнулся с проблемой, которую не знаю, как решить.Я загрузил пример проекта из их репозитория GitHub (https://github.com/IdentityServer/IdentityServer4.Templates). Используя их образец IdentityServer4InMem, я могу точно воспроизвести то, что испытываю.

Если я запускаю проект и открываю две вкладки со следующимиurl: http://localhost:5000/Account/Login

При входе на вкладку 1, если я пытаюсь войти на вкладку 2, я получаю HTTP ERROR 400. Я исследовал, что это связано с ValidateAntiForgeryToken, если я отключуаннотации, я не получаю ошибку. Конечно, я не могу сделать это в производстве, поэтому я пытаюсь найти решение.

1 Ответ

0 голосов
/ 04 мая 2019

Эта проблема не имеет ничего общего с Identity Server.

Чтобы использовать [ValidateAntiForgeryToken], вам необходимо @ html.antiforgerytoken () в файле .cshtml, который создает уникальный токен в скрытом поле, но в ядре .net вам не нужно использовать помощник @html. Маркер этого скрытого поля генерируется, когда вы делаете запрос HttpGet для страницы входа в систему, а затем проходит, когда вы нажимаете кнопку входа в систему.

В вашем случае, когда вы открываете две вкладки в браузерах, он создает токен по запросу get. И когда вы входите в систему с одной вкладки (запрос HttpPost), ваша личность меняется с анонимного пользователя на какого-то действительного пользователя, в этом случае ваш предыдущий токен для анонимного пользователя больше не действителен и всегда будет иметь статус 400.

Эта функция предотвращает подделку межсайтовых запросов , когда она предотвращает любую отправку формы после аутентификации пользователя.

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