Java RESTHTTP身份验证-如何?

Java RESTHTTP身份验证-如何?,java,web-services,authentication,resteasy,Java,Web Services,Authentication,Resteasy,所以,我正在使用RESTeasy和Google应用程序引擎开发REST Web服务。我的问题与GAE无关,但我提到它只是为了以防万一。我自然需要保护我的资源和我自己的用户(而不是谷歌的用户) 保护REST Web服务似乎是一个非常有争议的话题,或者至少是一个非常“自由”的话题。REST在这件事上没有强加任何标准。根据我在网络和文献上的研究,我认为至少有3种方法适合我的应用程序: HTTP Basic(带SSL) HTTP摘要(带SSL) OAuth OAuth似乎是最完整的方法。但我认为不需

所以,我正在使用RESTeasy和Google应用程序引擎开发REST Web服务。我的问题与GAE无关,但我提到它只是为了以防万一。我自然需要保护我的资源和我自己的用户(而不是谷歌的用户)

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

  • HTTP Basic(带SSL)
  • HTTP摘要(带SSL)
  • OAuth
OAuth似乎是最完整的方法。但我认为不需要这么复杂,因为我不需要授权任何第三方应用程序。这是一个只能由我自己的客户端应用程序使用的Web服务

httpbasichttpdigest似乎是web上最简单的两种,但事实是,例如,我从未找到使用RESTeasy实现它们的具体方法。 我在RESTeasy的文档中找到了和。它们确实非常有趣,但它们很少或根本没有讲述这个主题(HTTP Basic或Digest)

因此,我想问:

如何在RESTeasy中使用HTTP Basic或摘要保护我的Web服务

也许它太简单了,不值得在文档或其他任何地方提及? 另外,如果有人能给我提供一些关于保护RESTful Web服务的见解,这可能会很有帮助


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

您可以考虑使用。它比OAuth 1简单得多,Facebook和Google正在大型REST API上积极使用它。

保护REST API的最简单方法是通过SSL使用HTTP基本身份验证。由于头是加密的,所以使用摘要没有多大意义。只要您能够在客户端上保持密码的安全,这应该是非常有效的。

如果使用任何不带SSL的身份验证方法,您肯定会面临安全风险

但是,如果您确实使用SSL,您通常会受到性能不佳的影响

Oauth实际上是一个允许第三方访问您的Web服务的解决方案


由于选择有限,我对当前需要身份验证的Web服务的解决方案使用了SSL+basic的组合,我已经通过使用RESTeasy的拦截器实现了这一点。 基本上,通过使用类似侦听器的类来拦截请求。在这个类中,我检查请求的HTTP头,然后继续正常的基本身份验证过程

有用链接:



(Servlet部分)

我希望这对任何人都有帮助


谢谢。

如果最终用户必须授权访问第三方应用程序(如FB),我认为使用OAuth 2是好的,但是如果API的客户端是他自己的应用程序,并且它们是同一生态系统的一部分,我认为不需要OAuth。如@Lyuben所说,唯一使用此服务的应用程序是我自己的。为什么OAuth在这种情况下是合适的呢?我读到“保护我的资源和我自己的用户”意味着您有一些用户将使用OAuth。如果您是唯一的消费者,那么OAuth就太过分了。BasicAuth会好的是的我就是这么想的。这里真正的问题是如何在RESTeasy中实现它。它的文件仅仅是在这个问题上“触及表面”。JBOSS本可以在这方面做得更好。但不管怎么说,这是一个很好的框架。请看一下抱歉,您在这里做了一些错误的事情。1) 您用答案/部分答案更新了问题。如果您发现了其他人未提供的答案,则应添加该答案并将其标记为已接受。如果其他人提供了答案,那么您应该将该答案标记为已接受。2) 如果你还有一个问题,那么再问另一个问题,不要在你的问题中添加会使已经给出的答案无效的内容。@casperOne,你是对的,对不起。这是我在堆栈溢出中的第一个问题。谢谢。@Miguelcbain没问题,每个人都可以在出发时得到一些帮助。=)按照预期的方式使用它,它会为你带来好处。享受吧!是的,我明白了,问题已经解释清楚了。但谢谢你的澄清。问题是使用RESTeasy实现它的最佳方法是什么。对不起,这就是我略读的结果。关于
BASIC
的第一个链接中有一些垃圾,但我不知道如何配置用户名/密码。也许你应该把它重新标记为“java”,让更多的人看到它。是的,这也是我唯一看到的东西。我需要使用我的数据后端来存储和检索用户。我已经添加了标签“java”,我只是想补充一点,有时候从容器中使用身份验证引擎可能更合适。对于Tomcat了解领域,也不要忘记考虑Spring Security和Apache Shiro!