在Java中签名并验证方法调用

时间:2013-01-03 08:34:27

标签: java security cryptography

我们要求我们在应用程序中为某些关键功能签署参数。方法调用是使用RMI完成的。我的第一个想法是为参数构建一个包装类,并使用SignedObject对其进行签名。但这将导致许多包装器对象。

有没有人对如何以更一般的方式实现这一点有任何想法? 可能会覆盖RMI中的发送和接收功能以及广告签名和验证?

3 个答案:

答案 0 :(得分:1)

您可以通过SSL运行RMI。 Sun公司有几个JSR来做这件事,但他们被专家委员会的投票拒绝了。所以现在你必须选择一种非标准方式,我相信大多数应用服务器都这样做。

答案 1 :(得分:0)

对于调用该方法并授予他相关权限的用户进行身份验证是否还不够?这样你就可以传递你想要的任何参数,你只需要验证一次。您应该能够假设,如果他们可以冒充用户,他们也可以使用代码对参数进行签名。

除非他们从其他地方获取参数(原来可能是你吗?),在这种情况下如果参数是字符串谁创建参数值只能使用他们的私钥加密它们,你可以使用公钥解密他们实际上是烧掉参数值的人。使用签名包装器包装所有参数可能会产生很高的开销。

答案 2 :(得分:0)

当然有几种方法可以做到这一点。一个确实是签署数据流。另一个是签署参数对象实例和编码为字节数组的基本类型。两者都要求你在某个时候挂钩RMI。

可能更好的是将RMI服务放在SOAP服务之后,例如正如here所述。然后,您可以创建一个Web服务。获得网络服务后,您可以部署WS-Security。在这种情况下,您可以依赖预定义和研究的邮件格式来传输层安全性。