Как nonce и параметры состояния хранятся и передаются в IdentityServer4? - PullRequest
0 голосов
/ 11 ноября 2018

Я прочитал Здесь о разнице между параметрами state и nonce и из того, что я понял, параметр state генерируется сервер Authentication (Identity server) и используется клиентом для предотвращения CSRF-атак, тогда как параметр nonce генерируется клиентом, а затем сервер аутентификации включает его в токен и клиент будет использовать его для проверки правильности токена.

Мой первый вопрос: корректен ли вышеуказанный поток в случае identityServer4 при использовании неявного типа предоставления или нет?

Мой второй вопрос: где параметр nonce хранится в агенте пользователя (браузере) и как клиент генерирует и передает его?

Мой третий вопрос: как клиент перепроверяет параметр state , если он действителен или нет?

1 Ответ

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

Нет, состояние и nonce генерируются клиентом. Точно так же они проверены клиентом.

состояние предотвращает CSRF-атаки. Сервер авторизации будет включать в себя состояние , так что ответ на авторизацию может быть проверен для исходного запроса со стороны клиента. Точно так же nonce генерируется клиентом. Сервер авторизации просто включает его в токены для проверки.

Является ли вышеуказанный поток корректным в случае identityServer4 при использовании типа неявного предоставления или нет?

identityServer4 должен поддерживать включение состояния и одноразового номера в соответствующие ответы. Я верю, что это так.

Где параметр nonce хранится в агенте пользователя (браузере) и как клиент генерирует и передает его?

Это будет зависеть от реализации клиента. Протокол OIDC предоставляет руководство по реализации nonce

Одним из способов достижения этого для клиентов веб-сервера является сохранение криптографически случайного значения в качестве файла cookie сеанса HttpOnly и использование криптографического хэша значения в качестве параметра nonce

Как клиент перепроверяет параметр состояния, если он действителен или нет?

Когда клиент получает ответ об авторизации, он должен проверить приоритет параметра состояния в параметрах запроса URL-адреса (или его фрагментах). Затем он должен сравнить значение с исходным значением, которое он сгенерировал.

...