REST HTTP身份validation – 如何?

所以,我正在使用RESTeasy和Google App Engine开发REST Web服务。 我的问题与GAE没有关系,但我提到它只是为了重要。 事实上,我需要保护我的资源和我自己的用户(不是谷歌的)。

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

  • HTTP Basic (使用SSL)
  • HTTP摘要 (使用SSL)
  • OAuth的

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

HTTP BasicHTTP Digest在Web上显示为最简单的,但事实是我从未使用RESTeasy找到它们的具体实现,例如。 我在RESTeasy的文档中找到了这个页面和这个页面 。 它们确实非常有趣,但它们对此主题(HTTP Basic或Digest)几乎没有任何说明。

所以,我在这里问:

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

也许它很简单,在文档或其他任何地方都不值得一提? 此外,如果有人能够就保护RESTful Web服务的问题向我提供一些见解,那么它可能会有所帮助。

我选择了正确的方法吗?

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

我已经设法通过使用RESTeasy的拦截器来实现这一目标。 基本上,请求是通过使用像类这样的监听器来截获的。 在这个类中,我检查请求的HTTP头,然后继续正常的Basic-Auth过程。

有用的链接:

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

我希望这可以帮助任何人。

谢谢。

使用任何没有SSL的身份validation方法时,您肯定会面临安全风险。

但如果你确实使用了SSL,那么你通常会遇到性能不佳的问题。

Oauth实际上是一种允许第三方获取对您的Web服务的访问权限的解决方案。

由于选择有限,我对需要身份validation的当前Web服务的解决方案使用了SSL + basic的组合

您可以考虑使用OAuth 2 。 它比OAuth 1简单得多,并且被Facebook和Google主动用于大型REST API。