Рассмотрите протокол предоставления протокола авторизации OAuth-2.0.Узкое место OAuth-2.0 в Кодексе авторизации Протокол авторизации гранта
Как описано в стандартном проекте http://tools.ietf.org/html/ietf-oauth-v2-26 на Figure 3 : Authorization Code Flow
Client
получает маркер от имени Authorization Code
получил от User-Agent
. Предположим, что User-Agent
намеренно отправляет неверные коды в Client
. Если Authorization Server
защищает от brute force
способ получения Access Token
путем запрета Client
в течение некоторого разумного промежутка времени (по IP или по Redirection URI
имени хоста). Если в нашем случае предполагается, что Client
обрабатывает орды запросов от нескольких разных User-Agent's
, Client
прекратит обслуживать всех своих пользователей, если существует только один злонамеренный.
Таким образом, Client
становится узким местом в ситуации, описанной выше.
==== EDITED ==== Любые идеи о том, как избежать проблемы с узким местом?
Речь идет о «токене доступа», но наша ситуация довольно громоздка для нас, потому что существует один тип Auth, реализованный поставщиком Auth, который мы обязаны использовать. Я удалю фразу о «Auth Token», потому что это вводит в заблуждение и компенсирует точку моего вопроса. Спасибо за ответ. –
Спасибо за разъяснение. Я думаю, что ответ остается тем же, хотя ... единственный способ предотвратить эту атаку на вашем клиенте - реализовать тот же тип защиты, что и поставщик OAuth, который предотвращает использование вашего клиента в этих атаках с использованием грубой силы. –
Если вы просто используете OAuth для * авторизации *, и пользователь уже прошел аутентификацию (например, через имя пользователя/пароль), вы можете потребовать проверки подлинности перед тем, как позвонить в OAuth. Затем вы можете ограничить количество запросов OAuth на каждого пользователя, прошедшего проверку подлинности, и использовать CAPTCHA или аналогичные, чтобы затруднить создание пользователей. В принципе, вы можете сделать это намного сложнее, если машины используют ваш сервис, но, вероятно, не делают это невозможным. В какой-то момент нападавшие могут решить, что есть более простые цели и оставить вас в покое :) –