REST HTTP 身份验证 - 如何实现?

因此,我正在使用RESTeasy和Google App Engine开发REST Webservice。我的问题与GAE无关,但我提到了它,以防万一它很重要。碰巧的是,我自然需要保护我的资源和我自己的用户(而不是谷歌的)。

保护REST Web服务似乎是一个非常有争议的话题,或者至少是一个非常“自由”的话题。REST没有在这个问题上强加任何标准。根据我在网络和文献上的研究,我认为至少有3种方法可能适合我的应用程序:

  • HTTP Basic (with SSL)
  • HTTP Digest (with SSL)
  • 奥特

OAuth似乎是最完整的方法。但我不认为需要这种复杂性,因为我不需要授权任何第三方应用程序。它是一个 Web 服务,仅供我自己的客户端应用程序使用。

HTTP BasicHTTP Digest似乎是网络上最简单的,但事实是,例如,我从未使用RESTeasy找到它们的具体实现。我在RESTeasy的文档中找到了这个页面这个页面。它们确实非常有趣,但它们在这个主题(HTTP Basic或 Digest)上很少或根本没有告诉。

所以,在这里我问:

如何在 RESTeasy 中使用 HTTP Basic 或 Digest 来保护我的 WebService?

也许它是如此简单,以至于不值得在文档或其他任何地方提及?此外,如果有人能为我提供一些关于保护RESTful Web服务问题的见解,这可能会有所帮助。

我是否选择了正确的方法?


答案 1

保护 REST API 的最简单方法是通过 SSL 使用 HTTP 基本身份验证。由于标头是加密的,因此使用摘要没有太大意义。只要您能在客户端上保持密码安全,这应该可以很好地工作。


答案 2

我通过使用RESTeasy的拦截器设法实现了这一点。基本上,通过使用类似类的侦听器来拦截请求。在此类中,我检查请求的HTTP标头,然后继续进行正常的Basic-Auth过程。

有用的链接:


http://en.wikipedia.org/wiki/Basic_access_authentication 使用 REST API
http://www.alemoi.com/dev/httpaccess/ 在消息头中传递参数(Servlet 部分)

我希望这对任何人有所帮助。

谢谢。


推荐