首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保护用于Angular.js或Ember.js的的安全

如何保护用于Angular.js或Ember.js的的安全
EN

Stack Overflow用户
提问于 2014-02-07 05:31:04
回答 1查看 8.2K关注 0票数 6

我有一个Spring MVC应用程序,它使用Spring Security来处理用户登录身份验证,它工作得很好。

现在,我想将一些Ember.js和Angular.js代码添加到访问Spring服务(只返回RESTful数据)的RESTful页面。

如何将用户登录身份验证绑定到RESTful web服务的身份验证?换句话说,我想让它只在用户登录后才能访问RESTful web服务。这样,Angular.js和Ember.js库就可以从我的用户页面安全地访问这些RESTful web服务,而其他任何人都无法直接调用它们。

我在另一篇文章中读到,Spring Security从来就不打算与完整的Ajax框架一起使用,是真的吗?我希望情况并非如此。我想这类事情现在一定很常见了,因为有如此多的AJAX客户端框架是基于访问JSON/RESTful API来工作的。

EN

回答 1

Stack Overflow用户

发布于 2014-02-12 15:58:39

Spring Security从来就不应该在AJAX应用程序中使用,或者不能在AJAX应用程序中使用,这肯定不是真的。我在生产中有两个使用Spring Security和AJAX的应用程序,还有更多使用相同组合的应用程序正在开发中。

如果您打算在Spring Security工作的现有web应用程序中使用EmberJS或AngularJS,那么如果您只是将JavaScript库添加到您的项目中,您应该不会遇到太多问题。这是因为一旦您的用户通过身份验证,任何普通的HTTP请求也将被视为已通过身份验证,因为浏览器将确保使用cookie或URL参数来回传递会话信息。您可以看到我的一个用于Spring Security和EmberJS集成的working examples on Github

您可能唯一需要担心的是使用AJAX提交表单的CSRF令牌。最新的Spring Security文档有一小部分专门介绍这一点,所以让它工作起来也不会有太多问题。然而,我想要澄清的是,这个问题并不是Spring Security所特有的。CSRF保护通常涉及在每个HTTP POST请求中包含一个安全的、随机生成的令牌。挑战来自于让现有的JavaScript库意识到这个令牌,以及如何将它包含在HTTP POST请求中。这在任何应用程序中都是一个挑战,不仅仅是那些使用Spring Security的应用程序。

但是,如果您要使用无状态客户端,例如移动设备,您将无法依赖默认的Spring Security机制,该机制将用户凭据存储在HTTP会话中,因为HTTP请求没有将其绑定到会话的信息。同样,这也不是Spring或Spring Security应用程序所特有的,因为约束是由客户端和客户端-服务器通信的性质施加的,而不是任何服务器端技术。在这种情况下,您将需要在HTTP标头中传递一些身份验证令牌,以便应用程序维护服务器端的安全状态。我有一台working example for this as well。如果你需要更多细节,网上有一些文章解释了如何使用Spring Security来做这样的事情。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21614477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档