限制服务器使用以供内部使用

时间:2011-11-09 20:04:10

标签: java spring spring-mvc spring-security

我有一个使用spring MVC的REST Web服务,它是面向外部的。 我想限制访问某些REST调用以获取管理员使用情况以及同一内部网络上的其他服务器进行调用。

到目前为止,我可以想到以下解决方案:

  1. 使用Spring-Security限制使用“hasIpAddress”访问
  2. 到子网的映射
  3. 将敏感的REST调用分离到自己的控制器中并编写AOP切入点,该切入点读取HttpServletRequest以获取IP地址并检查白名单
  4. 我不喜欢这两种解决方案。 (1)没有给我足够的灵活性,我可能在几个子网上,并且可能只想打开一个IP范围。 (2)几乎完全给我我想要的东西,但看起来很糟糕,必须有更好的方法来做到这一点。

3 个答案:

答案 0 :(得分:0)

(2)为什么你不想使用像@PreAuthrize这样的“标准”注释。您可以将它们放在方法中,这样就不需要将敏感的REST方法移动到其他控制器。

答案 1 :(得分:0)

我解决此问题的方法是让用户登录并在会话中存储他们的登录ID。然后,每个类型都有一个新请求进入,您检查该用户的凭据以确保他们有权执行该功能并仍然登录。

答案 2 :(得分:0)

如果您使用的是反向代理,例如Apache,最简单的解决方案就是在那里处理它。

在Spring Security中,您将创建一个AbstractPreAuthenticatedProcessingFilter的子类,其中包含与您相关的IP逻辑,并使用ROLE_ADMIN将请求作为主体进行身份验证。