2016-01-22 15 views
0

我们使用Spring创建了一个Rest API。 没有执行安全措施。rest API,防止绕过Apigee的IP源控制

现在我们将要使用Apigee的API管理,它将提供各种服务,监控,安全等 我们所有的客户现在应该使用Apigee而不是直接调用我们的服务器上我们的服务拨打我们的API。

我们该如何强制绕过Apigee是不可能的?

我想,在我们的代码,我们可以有一个过滤器,并使用“访问控制允许来源”属性,是这样的:

public class OurFilter implements Filter 
{ 
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, 
      ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE"); 
     chain.doFilter(req, res); 
    } 
} 

其中“*”将被替换Apigee IP,域名或其他。

我的问题是如何安全的。人们可以在他们的http请求中添加一个头并直接成功地调用我们的服务器吗?或者它检查低级别个人“IP数据包”上的原始IP。

如果仅通过编辑http标题就可以伪造,那么绕过Apigee不可能的正确方法是什么?

非常感谢

回答

0

的头,你可以考虑使用是实现CORS,这是浏览器(客户端)端重要的,但它并没有提供对服务器端的任何安全性。

如果您希望保护后端API免于直接使用,您必须在Apigee和后端API之间建立某种身份验证,以便后端API拒绝来自其他客户端的任何请求。

有不同的选择,如何做到这一点。它取决于所需的安全级别和后端API的功能。

例如:

  • 通过IP地址限制 - 允许Apigee的IP地址只有
  • 使用共享的秘密请求 - 当与后端API通信Apigee将添加包含密钥,一个报头被后端认可。这可能是最简单的解决方案,并提供合理的安全级别。当然,假设通信仅通过HTTPS :)。
  • 使用two-way SSL - 这更安全,但也更复杂。 Apigee方将必须使用客户端证书向后端API进行身份验证。