在Java Soap服务中使用https

问题描述:

所以我是spring-ws和SOAP的新手,并且担心发送到我的SOAP服务的信息的安全性。在Java Soap服务中使用https

我想使用某种形式的http授权,看起来这不是通过spring-ws API完成的。

  • 有谁知道做这一个很好的信息资源,
  • 有任何意见提供?

我承认我在安全策略方面缺乏大量知识,所以任何事情都会有所帮助。

顺便说一下,我使用glassfish 3作为我的应用程序服务器。

编辑:我不想把安全功能放在肥皂消息。我正在发送客户信息,以便http消息必须加密。通过身份验证确保请求来自正确的用户(因此随机用户无法使用我的soap服务)将会非常有帮助。

+0

什么意思是'安全'的意思 - 你只是想保护通过电线发送信息,或者你需要认证/授权或两者? – maximdim 2012-02-08 18:44:33

+0

我想通过电线加密信息并对用户进行身份验证。 – thatidiotguy 2012-02-09 14:26:03

+3

那么,在我看来,最简单的方法就是将Web容器配置为使用SSL进行客户端身份验证。它可能会或可能不适用于您的案例(例如,如果您提供的公共服务可能不想分发客户端证书等),但这样您的传输将被加密和验证,并且您的Web服务将不需要处理任何这些细节。 – maximdim 2012-02-09 15:23:21

如果你想使用SSL客户端验证这将是特定容器配置的一些详细信息。例如,如果您的目标部署是Glassfish,则可以从读取this开始。

请记住,使用SSL客户端身份验证,您需要处理发布客户端证书(通过您自己的CA)或接受现有客户端证书。如果你在或多或少受控制的环境中(例如B2B),这可能是可以接受的,但如果你尝试构建公共Web服务时真的很麻烦。做一些关于SSL客户端认证,证书等的阅读 - 互联网上有很多信息。

有一整章描述spring-ws的安全问题here。 你看过吗?


编辑:于SO

+0

是的,我的问题是我想通过http做所有的安全性,而不是在实际的soap消息中。正如你从该页面上看到的那样,它甚至会说:“请注意,纯文本密码并不是非常安全的,因此,如果你正在使用它们,你应该总是向传输层添加额外的安全措施(例如使用HTTPS而不是普通的HTTP) 。“但它从来没有解释如何做到这一点。我问的是你如何做到这一点?它是由应用程序服务器完成的,在我的应用程序环境中设置的,硬编码等等。 – thatidiotguy 2012-02-09 15:23:08

我喜欢这个post如何描述HTTPS和WSS之间的不同。它可以帮助你。