Ответ 1
State и nonce кажутся похожими. Но если вы будете копать глубоко, вы обнаружите, что они служат различным целям.
Состояние существует для защиты конечного пользователя от атак подделки межсайтовых запросов (CSRF). Он введен из протокола OAuth 2.0 RFC6749. Протокол гласит, что
После получения разрешения от конечного пользователя сервер авторизации перенаправляет пользовательский агент конечного пользователя обратно в клиент с обязательным значением привязки, содержащимся в "состоянии" параметр. Значение привязки позволяет клиенту проверить обоснованность запроса путем сопоставления значения привязки с Состояние аутентификации агента пользователя
И это используется в запросе авторизации. Это позволяет клиенту проверить, что ответ на авторизацию не был изменен и отправлен исходным сервером, который выполняет аутентификацию. Запрос был отправлен. Короче говоря, это позволяет клиенту перепроверить запрос авторизации и ответ.
Nonce служит другой цели. Он связывает токены с клиентом. Он служит параметром проверки токена и представлен в спецификации OpenID Connect.
nonce - строковое значение, используемое для связи сеанса клиента с идентификатором токена и для предотвращения атак воспроизведения. Значение передается неизмененным из запроса аутентификации на токен идентификатора. Если он присутствует в токене идентификатора, клиенты ДОЛЖНЫ проверять, что значение утверждения одноразового номера равно значению параметра одноразового номера, отправленного в запросе на аутентификацию. Если они присутствуют в запросе на аутентификацию, серверы авторизации ДОЛЖНЫ включать Заявку о одноразовом назначении в маркер идентификатора, причем значением утверждения является значение одноразового номера, отправленное в Запросе на аутентификацию. Серверы авторизации СЛЕДУЕТ не выполнять никакой другой обработки используемых значений nonce. Значение nonce является чувствительной к регистру строкой
Как видите, значение nonce происходит из запроса авторизации и генерируется клиентом. И если одноразовый номер включен, он будет присутствовать в токене. Таким образом, клиент может проверить полученный токен в соответствии с первоначальным запросом авторизации, тем самым обеспечивая действительность токена.
Кроме того, в зависимости от типа потока, nonce может быть обязательным параметром. Значение nonce мандата неявного потока и гибридного потока. Оба значения генерируются и проверяются клиентским приложением.
Почему государство не может быть повторно использовано?
Если запрос на авторизацию получен, злоумышленник может подделать ответ на запрос авторизации. Этого можно избежать, изменив параметр состояния.