Знаете ли вы о модуле NGiNX, который выполняет что-то похожее на проверку подписей запросов веб-службы Amazon? - PullRequest
2 голосов
/ 20 февраля 2010

Я бы хотел ограничить доступ к своему веб-сервису зарегистрированным клиентам. Первым делом я подумал о том, чтобы имитировать тот тип AWS, который, в двух словах, выдает клиентам пару не секретных и секретных ключей и требует от клиентов подтверждения знания секретного ключа с помощью криптографической функции некоторых HTTP-запросов. данные и секретный ключ, а затем указание вывода криптографической функции в заголовке запроса. AWS делает то же самое и проверяет, соответствует ли ожидаемая подпись тому, что указал клиент. Секрет не передается, бла-бла. Это довольно типично и не так интересно, хотя и полезно.

http://mws.amazon.com/docs/devGuide/Signatures.html

http://chrisroos.co.uk/blog/2009-01-31-implementing-version-2-of-the-amazon-aws-http-request-signature-in-ruby

Мой любимый веб-сервер для веб-сервисов - nginx. Я хотел бы начать требовать аналогичные подписи запросов в определенных службах. Для меня имеет смысл создать модуль nginx, который обрабатывает проверку подписи запроса перед тем, как отправлять запрос в вышестоящий процесс (мои экземпляры веб-службы).

Вам известен такой модуль nginx? Знаете ли вы о другом, на котором я могу основывать свою работу?

Здесь есть достойное руководство по написанию модуля nginx:

http://www.evanmiller.org/nginx-modules-guide.html

Обратите внимание, что я не спрашиваю "как мне написать модуль nginx?" Я просто пытаюсь не изобретать велосипед.

Спасибо!

1 Ответ

0 голосов
/ 23 февраля 2010

Если я правильно понимаю, вы можете просто проверить пользовательские заголовки с if($http_{yourheader}){} и проверить это по отношению к бэкенду, такому как memcached, или прокси к скрипту fastcgi, или даже использовать встроенный скрипт perl (хотя это быть медленным и может блокировать).

AFAIK Не существует каких-либо конкретных стандартных или сторонних модулей, которые делают это, но их комбинация может обеспечить подходящее решение (например, $http_{header} + redis бэкэнд, например).

Есть ли конкретная причина, по которой вы не хотите использовать пользовательские сертификаты SSL? Они могут показаться адекватным решением для ограничения доступа с дополнительной безопасностью.

...