您是否知道NGiNX模块执行类似于验证Amazon Web Service请求签名的内容?

时间:2010-02-20 03:44:25

标签: web-services security authentication nginx amazon-web-services

我想限制我的网络服务访问注册客户端。我想到的第一件事就是模仿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。我想在某些服务中开始要求类似的请求签名。在将请求发送到上游进程(我的Web服务实例)之前,创建一个处理请求签名验证的nginx模块是有意义的。

你知道这样的nginx模块吗?你知道我可以根据自己的工作做出不同的事吗?

这里有一个不错的nginx模块编写指南:

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

请注意,我询问“如何编写nginx模块?”我只是想避免重新发明轮子。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需检查带有if($http_{yourheader}){}的自定义标头,并针对后端(例如memcached)或代理fastcgi脚本进行验证,甚至使用嵌入式perl脚本(尽管这将是缓慢的并且可以阻止。)

AFAIK没有任何特定的standardthird-party模块执行此操作,但它们的组合可以提供合适的解决方案(例如; $http_{header} + redis后端,例如)。

您是否有特殊原因想要使用自定义SSL证书?它们似乎是一种适当的解决方案,可以通过增加安全性来限制访问。