OpenID Connect и поток кода авторизации на стороне сервера
У меня есть несколько вопросов.
Поток кода авторизации и одноразовый номер
Нужно ли проверять одноразовый номер на стороне клиента при использовании потока кода авторизации? В общей реализации OAuth-провайдера процесс получения токена доступа из кода авторизации работает только один раз. Исходя из этого, кажется, что поток кода авторизации уже поддерживает повторную атаку без использования nonce?
Поток кода авторизации и идентификационный токен
Каковы преимущества использования кода авторизации в веб-приложениях? Идентификационный токен - это механизм аутентификации, а не авторизации. Я понимаю, что он используется для проверки того, какой поставщик OpenID аутентифицирует какого пользователя для какой ретрансляционной стороны.
Но в потоке кода авторизации,
- OAuth 2.0 требует использования HTTPS. Исходя из этого, если проверка SSL-сертификата выполнена правильно, это будет действительным доказательством поставщика OpenID.
- В общей реализации OAuth-провайдера при получении токена доступа из кода авторизации комбинация кода авторизации, идентификатора клиента и секрета проверяется ниже. Исходя из этого, он докажет, что выполняет процесс получения токена доступа от правильного клиента OAuth.
- Указав параметр состояния для создания запроса авторизации и проверив его при получении токена доступа, он докажет, что получает токен доступа от правильного пользователя.
1 ответ
Я не авторитет в OpenID Connect, но вот мои два цента...
Поток кода авторизации и одноразовый номер
Нужно ли проверять одноразовый номер на стороне клиента при использовании потока кода авторизации?
В спецификации сказано, что если вы отправляете одноразовый номер в запросе на авторизацию, вы ДОЛЖНЫ проверить его (см. "Nonce" в http://openid.net/specs/openid-connect-core-1_0.html). Однако отправка одноразового номера не требуется для потока кода авторизации, так что вы можете вообще его исключить. В случае потока кода авторизации, я думаю, вы правы в том, что атака повторного воспроизведения смягчается кодом, что делает ненужным одноразовый номер. Однако, поскольку можно использовать неявный / гибридный поток, где требуется одноразовый номер, логика проверки id_token также может быть такой же: "Если значение одноразового номера было отправлено в запросе на аутентификацию, требование одноразового номера ДОЛЖНО присутствовать, и его значение проверено
Поток кода авторизации и идентификационный токен
Каковы преимущества использования кода авторизации в веб-приложениях?
Я думаю, что преимущество потока кода авторизации состоит в том, что вы храните токены вне браузера и, вероятно, можете хранить токены только на стороне сервера.
Вот полезная ссылка о выборе правильного потока для правильного сценария