使用 Spring Security 保护移动 REST Api 足够了吗?

Posted

技术标签:

【中文标题】使用 Spring Security 保护移动 REST Api 足够了吗?【英文标题】:Securing mobile REST Api with spring Security enough? 【发布时间】:2015-02-26 14:43:40 【问题描述】:

我正计划制作一个依赖于 java (spring-spring mvc) REST API 的小型移动应用程序。 API 将具有如下所示的路径,例如:

/rest/account POST(会新建一个账号(账号由用户名+密码+邮箱组成)

/rest/photo/like 例如修改行为并将内容添加到数据库...

我还计划使用 Spring Security 来处理身份验证/授权。 因此,在进行任何授权调用之前的移动应用程序(例如到 /rest/photo/like)它必须登录(所以基本上到 /security_check?j_username=username&password

从现在开始,每个请求都必须在 cookie 中包含 JSESSIONID。

我的问题是,这是否足够安全?我必须使用 OAUTH2 吗?还是太过分了?

额外问题:由于您不需要经过身份验证即可进行 /rest/account 调用来创建帐户,因此避免用户创建 1000000 个帐户的最佳方法是什么? Apache/IP 过滤器?或者我应该在 spring-mvc 的一些拦截器中处理这个?

【问题讨论】:

【参考方案1】:

1) 是的,根据您的需求描述,我会说 Spring Security 可以。 (REST 服务通常是无状态的,而不是使用会话,但 Spring Security 可以同时处理这两者。)

2) 除非您想从用户的 Google 或 Facebook 帐户或类似的东西中提取信息,否则您不需要使用 OAuth2。

3) 奖金问题并非微不足道。一种常见的方法是使用CAPTCHA。例如,您可以使用 OAuth 将用户限制为他们拥有的每个 Google/Facebook/X 帐户的一个帐户。

【讨论】:

以上是关于使用 Spring Security 保护移动 REST Api 足够了吗?的主要内容,如果未能解决你的问题,请参考以下文章

从移动设备登录 Spring Security、Rest api 和 Facebook

使用 Spring Security 的 CSRF 保护

使用 Spring Security 的 CSRF 保护

使用 Spring Security 保护 REST API

使用 spring-security-oauth2 2.0.5.RELEASE 保护 Spring REST 服务

Spring Security RememberMe & RESTful API