У меня два вопроса:
Q1: Почему OAuth2 требует упорядочивания параметров и закодированный (для двуногих)?
Все, о чем он должен беспокоиться, - это совпадение подписи в обоих концах для заданных данных (строки запроса).
Мы можем просто проверить сгенерированную подпись с помощью строки запроса (например,? A = 1 & b = 2). Поскольку подпись генерируется на основе секретного ключа, который известен только клиенту и поставщику, мы можем рассматривать только строку запроса без какого-либо упорядочивания / кодирования.
Итак, в чем преимущество выполнения упорядочивания / кодирования и последующего создания подписи?
Q2: Как эта подпись может спасти меня от атаки «злоумышленник посередине»?
Если мне придется сделать это такой запрос к моему серверу от клиента:
increaseUserPoints?userId=1&pointsToAdd=5&appId=x&token=XYZ
Теперь токен XYZ будет всегда одинаковым, поэтому хакер может продолжать отправлять тот же запрос на увеличение очков
. Поскольку сгенерированный токен из заданного appId
одинаков, сервер разрешит это. Как обрабатывается этот случай?