【问题标题】:Blocking REST API calls阻止 REST API 调用
【发布时间】:2012-04-09 06:45:11
【问题描述】:

有没有办法阻止对非授权客户端的 REST API 调用? 有没有办法让 API“仅限于”(公开)少数定义明确的客户端?

谢谢 :-)

【问题讨论】:

  • 您需要确保谁可以连接到服务器。
  • REST 不公开 API。您对 RPC 感到困惑。 http://en.wikipedia.org/wiki/REST
  • 假设您的意思不是 REST,您使用的是什么服务器平台/语言/框架?

标签: security authentication rest


【解决方案1】:

您可以在客户端和服务器之间部署相互验证的 SSL。您可以在此处使用自签名证书,因此您无需从 CA 购买任何证书。这将确保您的服务器仅接受来自具有客户端证书的客户端的请求(将您的服务器配置为仅接受部署在客户端上用于客户端身份验证的自签名客户端证书)。

【讨论】:

    【解决方案2】:

    如果您使用的是 RESTFul HTTP

    您可以将 HttpServletFilter 添加到您的 web.xml,以防止未经授权的客户端访问您的 REST 方法。

    Securing JAX-RS and RESTeasy

    如果您使用 Spring 框架并且不想实现自己的 HttServletFilter,您可以使用 Spring Security

    【讨论】:

      【解决方案3】:

      您只需要在您的 RESTful 服务中实现安全机制,因此它会拒绝对未经授权的客户端的访问(使用 404 或 401 响应代码)。有几种方法可以实现:

      • 基于 HTTP 身份验证机制的中继,例如 Basic Authentication
      • 实施自定义身份验证框架,克服 HTTP 基本身份验证限制。 Amazon 有一个有趣的方法,包括自定义 HTTP 标头并支持散列。
      • 使用现有的安全框架并将其功能添加到您的服务中。 Spring Security 听起来是个不错的选择。

      【讨论】:

        猜你喜欢
        • 2018-06-04
        • 2016-10-23
        • 2015-11-18
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多