【问题标题】:Encrypting data for RESTful services using Jersey使用 Jersey 加密 RESTful 服务的数据
【发布时间】:2011-09-30 14:49:05
【问题描述】:

我正在使用 Jersey 进行 RESTful Web 服务开发。我已经为点对点安全配置了 SSL……但我需要一些应用程序级别的安全性(端到端),我猜加密是唯一的方法。 Jersey 是否内置了一些加密功能,用于加密我发送给客户的 XML/JSON?或者在这种情况下可以帮助我的第三方 Java 过滤器??

如果我一无所获,我想我可能必须编写代码来加密对象,然后再通过 Jersey 将其序列化为 XML/JSON……但我想这会很痛苦,而且效率要低得多。

对此主题的任何想法将不胜感激。我希望我的 RESTful 服务与 SOAP WS 安全标准提供的服务一样安全。

非常感谢!

【问题讨论】:

  • 那么,您正在使用 SSL 对网络上的数据进行加密,但您还想对要加密的数据进行加密?你想通过这样做解决什么问题?您的应用程序是否需要访问 XML/JSON 有效负载中的数据?
  • 我也在寻找应用程序级别的安全性,而不仅仅是传输级别的安全性。根据我通过网络阅读的内容,SSL 不提供端到端安全性(应用程序级别):serverfault.com/questions/277644/…
  • 我仍然不明白您所说的“应用程序级安全性”是什么意思。您是否试图防止窥探您的数据库?你的日志?您的流程?
  • 我在这里生成了这个词,就像我在网上看到的那样!我只需要以只有指定的“应用程序”(而不是“系统”)能够使用我的客户端发送的数据的方式来保护我发送的数据。这是因为我需要在许多可能/不使用 SSL 的中介之间传递这些数据。
  • 因此,您要做的是防止数据在应用程序层之间移动时被窥探,对吧?然后,您需要坚持使用 SSL 来加密在应用程序的每一层之间移动的数据。如果您无法做到这一点,您最终将在您的应用程序中重新实现类似 SSL 的功能,从而使其更复杂且更难维护。在每一层之间强制执行安全传输会好得多。

标签: java security rest soap jersey


【解决方案1】:

如果您必须将所有内容都放在 RESTful 服务的 URL 上,那么您可能会遇到加密时 url 的长度限制。

我倾向于使用 BouncyCastle (http://www.bouncycastle.org/) 进行加密,但那是因为它们支持 Java 和 .NET。

但是,您为什么担心 SSL 可能不够安全?

如果您想验证是谁发送的,那么您可能只想让发件人创建一个数字签名并附加,这样您就可以验证他们的签名。

【讨论】:

  • 谢谢詹姆斯。你能解释一下你答案的最后一段吗?不清楚,但对我来说似乎很有用。
  • @WinOrWin - 由于我没有意识到数据还会经过其他阶段,所以我的想法是您想要加密以验证发件人。在这种情况下,您可以连接参数,然后从中获取数字签名,因此只有发送者可以创建它,但任何人都可以通过检查签名来验证参数中的任何内容都没有更改。所以它告诉你两件事,发件人就是你认为的那个人,自发送以来没有任何数据发生变化。
  • 谢谢詹姆斯。我也会尝试融入这个想法。
【解决方案2】:

我不确定为什么单独使用 SSL 不能满足您的需求(“点对点”与“端到端”不是一回事吗?)但 the Keyczar encryption library(由 Google 开源)看起来很简单使用。

【讨论】:

  • 我在许多论坛上看到 SSL 不提供端到端安全性:serverfault.com/questions/277644/…
  • 阅读the first answer to the question you linked to 澄清原始发帖人被一篇讨论数据中继的文章弄糊涂了,他的问题(和你的问题)并不关心。如果您在服务和客户端之间使用 SSL,那么您的服务和客户端之间的所有内容都会通过网络进行加密。如果您的服务需要将来自客户端的请求中继到其他服务,并且仅在客户端到服务器之间使用 SSL,那么整个事情都没有加密。
  • 在只有一个系统与另一个系统通信的系统中,“点对点”和“端到端”的含义相同,因为“点”和“端”是相同的.
  • 很抱歉最初没有澄清。我有一个用于消息传输的中介列表,它可能使用也可能不使用 HTTPS。在我上面发布的链接中,很明显我必须对这种情况进行应用程序级加密。
  • @WinOrWin - Jersey 等库不会包含您需要的加密,因为它很少使用,因为大多数人只能使用 https。由于 url 的最大长度,如果这成为问题,您使用的内容将更加复杂。
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 2011-02-17
  • 2015-03-11
  • 1970-01-01
  • 2014-09-13
  • 2017-05-24
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多