Лучший подход к периодической ошибке "nonce was null" - PullRequest
0 голосов
/ 09 марта 2020

У меня есть приложение ASP. NET, которое проверяет пользователя с помощью отдельного поставщика удостоверений (используя протокол OpenID Connect.)

Пользователи жалуются на случайную ошибку:

Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException: IDX21323: RequireNonce равен «[PII скрыт]». OpenIdConnectProtocolValidationContext.Nonce был нулевым, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce не был нулевым. Одноразовый номер не может быть подтвержден. Если вам не нужно проверять одноразовый номер, установите для OpenIdConnectProtocolValidator.RequireNonce значение false. Обратите внимание, что если 'nonce' найдено, оно будет оценено.

Пользователи сталкиваются с этой ошибкой, а затем обнаруживают, что если они снова попробуют войти в систему, это сработает.

Я могу воспроизвести эту ошибку инициируя процесс входа в систему и, находясь на странице провайдера идентификации, очищая cook ie с префиксом OpenIdConnect.nonce.

В сообщениях об ошибках предлагается установить для OpenIdConnectProtocolValidator.RequireNonce значение false. Я считаю, что это неудовлетворительное решение, потому что это сделает сайт уязвимым для атак повторного воспроизведения.

Есть ли у "наилучшей практики" способ для веб-сайта изящно справиться с этой ошибкой?

...