Как реализовать ограничение скорости для API REST, защищенного OAuth?

Есть ли какие-либо передовые практики для реализации ограничения скорости для API, защищенного OAuth2?

Я понимаю, что для этого часто используется REDIS, но поскольку я использую базу данных для сохранения токенов, я думал использовать ее также для ограничения скорости. Он будет хранить максимальное количество запросов для каждого токена и уменьшать его каждый раз, когда токен используется, а затем сбрасывать счетчик ежедневно или ежечасно.

Есть ли серьезные проблемы с таким подходом?


person wannabeartist    schedule 11.03.2015    source источник


Ответы (1)


Наиболее распространенный алгоритм, используемый для этого - Token Bucket.

Вы можете поместить логику в свое приложение и использовать redis или другую базу данных в качестве бэкэнда. Redis особенно интересен этим, потому что вы можете использовать такие вещи, как TTL.

Я работал над другим подходом, перемещая всю логику на демон. У меня пока нет клиентов для других технологий, кроме node.js, но вы можете проверить идею здесь.

person José F. Romaniello    schedule 19.04.2015