Browser https上的Web服务调用

Browser https上的Web服务调用,browser,service,certificate,Browser,Service,Certificate,在我的web应用程序中,我必须将一些数据发布到https上的远程第三方web服务。web应用程序的用户已获得连接到web服务的个人证书。web应用程序将作为最终用户和web服务之间的中介,因为该应用程序拥有所有要发布的数据。如何做到这一点?可从Web应用程序启动的小程序或Java Web Start。你们能给我点光吗。等待你的想法、建议 谢谢web服务提供商是否在与web应用程序不同的计算机上运行 如果没有,您可以直接教web应用程序公开处理用户请求所需的web服务。您可以使用WS-Securi

在我的web应用程序中,我必须将一些数据发布到https上的远程第三方web服务。web应用程序的用户已获得连接到web服务的个人证书。web应用程序将作为最终用户和web服务之间的中介,因为该应用程序拥有所有要发布的数据。如何做到这一点?可从Web应用程序启动的小程序或Java Web Start。你们能给我点光吗。等待你的想法、建议


谢谢

web服务提供商是否在与web应用程序不同的计算机上运行

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

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

如果是,您可以在用户通过SSL对web应用程序进行相互身份验证后,直接从web应用程序使用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");

有关javax.net.ssl.trustStore属性的详细信息,请阅读。

web服务在不同的计算机上运行,并向公众公开,但仅使用有效的证书。我想从客户端浏览器调用web服务,该浏览器将证书添加到浏览器密钥库中。如果未将有效证书添加到浏览器,则必须(通过浏览器)向客户端公开错误。因此,调用过程应该在客户端/浏览器端运行。怎样Applet或Java Web Start。等待您的建议。很抱歉延迟,我在这里。然后,您应该使用Applet,但需要对其进行签名才能访问敏感数据,如运行中的本地计算机上安装的证书。有很多关于如何签署小程序的教程,只有谷歌上的“签署小程序”一词。这是因为小程序是由浏览器自动执行的,所以不能隐式地认为代码是可信的。希望这有帮助。你好,Luca,很抱歉耽搁了,我可以为小程序签名,但我认为真正的问题是,web服务服务器上的证书不是可信的(如verisign或godaddy),而是自签名的。正如您所知,一旦我们将自签名证书导入浏览器,它将在不发出安全警报的情况下接受对域的请求。如何运行applet调用Web服务,即使用安装在运行Web服务的浏览器上的证书调用Web服务。希望您能给我指出正确的方向。要使用自签名证书,请让小程序将该证书导入密钥库,可以是JRE默认密钥库,也可以是运行时加载的自定义密钥库。