2011-03-01 44 views
0

上的Web服务调用,我必须在https上发布一些数据到远程第三方Web服务。 Web应用程序的用户已经获得了单独的证书以连接到Web服务。 Web应用程序将作为最终用户和Web服务之间的中介工作,因为应用程序具有所有要发布的数据。这怎么能实现呢?可从Web应用程序启动的Applet或Java Web Start。你们可以投点灯吗?等待你的想法,建议。来自我的Web应用程序的https

三江源

回答

0

是否在不同的机器比Web应用程序上的Web服务提供商运行?

如果没有,您可以直接教Web应用程序公开处理用户请求所需的Web服务。您可以使用其中一种WS-Security协议来相互验证客户端和服务器。

如果是,Web服务提供者是否运行在Web应用程序可以看到的专用网络上?

如果是,您可以直接从您的Web应用程序使用Web服务,在用户通过SSL向Web应用程序进行相互身份验证之后,并将使用的数据发送给用户。

如果不是,则使用SSL在Web应用程序上相互认证用户;从Web应用程序中,使用WS-Security协议之一使用服务器证书来互相共享给Web服务提供者。

编辑

要使用自签名证书的工作,让小程序进口,在一个密钥证书,无论是在JRE的默认密钥库,或在运行时加载的自定义密钥库(更准确地说,用于密钥库信任证书称为TrustStore)。

您可以使用Oracle提供的keytool可执行文件创建密钥存储库。一旦您教您的小程序使用该密钥库,您的小程序就会信任该自签名服务器证书。

设置与应用程序信任库:

System.setProperty("javax.net.ssl.trustStore","path/to/clientTrustStore.key"); 
System.setProperty("javax.net.ssl.trustStorePassword","keystore-password-if-any"); 

阅读this link有关javax.net.ssl.trustStore中财产的进一步信息。

+0

Web服务在不同的机器上运行,暴露给公众但只使用有效的证书。我想从具有添加到浏览器密钥库的证书的客户端浏览器调用Web服务。如果有效证书没有添加到浏览器中,则必须将错误暴露给客户端(通过浏览器)。所以调用过程应该在客户端/浏览器端运行。怎么样? Applet或Java Web Start。等待您的建议。 – 2011-03-01 19:39:57

+0

对不起,我在这里。 然后,你应该去Applet,但你需要签署它来访问安装在运行本地机器上的证书等敏感数据。 有很多关于如何签署一个小程序的教程,只是谷歌“签署一个小程序”。 – 2011-03-06 11:52:44

+0

这是因为applet是由浏览器自动执行的,所以代码不能被隐式视为可信。 希望这会有所帮助。 – 2011-03-06 12:01:34

相关问题