lit*_*m84 67 javascript rest restful-authentication node.js backbone.js
我可以在REST API上提供一些帮助.我正在编写一个Node.js应用程序,它使用Express,MongoDB并在客户端有Backbone.js.我花了最近两天的时间试图弄清楚这一切并没有太多运气.我已经检查过了:
我想保持我的后端和前端尽可能分开,所以我想使用精心设计的REST API会很好.我的想法是,如果我开始开发iPhone应用程序(或类似的东西),它可以使用API来访问数据.
但是,我希望这是安全的.用户已登录我的网络应用程序,我想确保我的API安全.我读过关于OAuth,OAuth 2.0,OpenID,Hmac,哈希等...我想避免使用外部登录(Facebook/Twitter/etc)我希望注册和登录在我的应用程序/服务器上.
......但我仍然在这里感到困惑.也许是深夜或我的大脑只是油炸,但我真的可以做一些关于这里做什么的步骤.我创建安全API的步骤是什么?
任何帮助,任何信息,任何示例,步骤或任何事情都会很棒.请帮忙!
ghi*_*man 39
为了提高安全性/复杂性:
许多API库可以让你构建它(例如Django中的Piston),或者你可以让你的web服务器来处理它.Nginx和Apache都可以使用服务器指令来使用简单的b64encoded密码来保护站点.它不是世界上最安全的东西,但它至少是用户名和密码!
如果你正在使用Nginx,你可以在主机配置中添加一个部分,如下所示:
auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
Run Code Online (Sandbox Code Playgroud)
(把它放在你的location /
街区)
文档:http://wiki.nginx.org/HttpAuthBasicModule
您需要获取python脚本来生成该密码并将输出放入文件中:http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py?format = txt
只要Nginx可以访问它,文件的位置就没那么重要了.
保护从服务器到应用程序的连接,这是最基本的,可以防止中间人攻击.
您可以使用Nginx执行此操作,其文档非常全面:http://wiki.nginx.org/HttpSslModule
一个自签名证书就可以了(免费!).
这些可以是您喜欢的任何格式,但如果您需要,它们可以为您提供撤消访问权限的好处.如果您正在开发连接的两端,可能不是完美的解决方案.当你有第三方使用API时,它们往往会被使用,例如Github.
OAuth 2.0就是这里的用户.虽然我不知道规范的基本工作原理,但它现在是大多数身份验证的事实标准(Twitter,Facebook,Google等),并且有大量的库和文档可以帮助您实现这些功能.话虽如此,它通常用于通过询问第三方服务进行身份验证来验证用户身份.
鉴于您正在进行开发两端,可能就足以将您的API置于Basic HTTP Auth之后并通过HTTPS提供服务,尤其是如果您不想浪费时间来处理OAuth.
mjt*_*lyn 28
这是一种不同的思考方式:
我们假设您没有使用API.您的用户登录应用程序,提供一些凭据,并向用户提供某种cookie或类似的令牌,用于识别该用户已登录.然后,用户请求包含受限信息的页面(或创建/修改/删除它),因此您检查此令牌以确保允许用户查看该信息.
现在,我觉得你在这里改变的唯一方法就是提供信息的方式.您不是将信息作为呈现的HTML提供,而是将信息作为JSON返回并在客户端呈现.您对服务器的AJAX请求将携带与之前相同的登录令牌,因此我建议只检查该令牌,并以相同的方式将信息限制为"只是允许用户知道的内容".
您的API现在和您的登录一样安全 - 如果有人知道访问api所需的令牌,他们也会登录到站点并且无论如何都可以访问所有信息.最好的一点是,如果你已经实现了登录,你就不必再做更多的工作了.
诸如OAuth之类的系统的关键是提供这种"登录"方法,通常来自第三方应用程序和开发人员.对于iPhone应用程序或类似应用程序而言,这可能是一个很好的解决方案,但这是将来的问题.API接受多种身份验证方法没有错!
到目前为止,答案很好地解释了,但是没有给出任何实际步骤.我看到了这篇博文,详细介绍了如何使用Node + Passport安全地创建和管理令牌.
http://aleksandrov.ws/2013/09/12/restful-api-with-nodejs-plus-mongodb/
归档时间: |
|
查看次数: |
37772 次 |
最近记录: |