Glassfish JAX-WS 并排 SSL / 不安全的 EJB Web 服务
Posted
技术标签:
【中文标题】Glassfish JAX-WS 并排 SSL / 不安全的 EJB Web 服务【英文标题】:Glassfish JAX-WS side by side SSL / insecure EJB webservice 【发布时间】:2011-02-24 02:39:09 【问题描述】:是否可以同时以安全和不安全的方式运行单个 @WebService bean,最好使用相同的 URL,但 http/https 协议不同?
我可以使用以下方式安全或不安全地运行服务:
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
或
<transport-guarantee>NONE</transport-guarantee>
在 sun-ejb-jar.xml 中
IE。
<ejb>
<ejb-name>MyEJB</ejb-name>
<webservice-endpoint>
<port-component-name>MyWebService</port-component-name>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</webservice-endpoint>
</ejb>
建议?
【问题讨论】:
我不清楚细节......所以我不会提交这个作为答案......你可能想深入研究灰熊端口统一的话题。看起来这样可以让你做你想做的事。 谢谢 vkraemer 我会看看那个。我知道这是一个很老的问题。但是,我想提供这个答案,因为我最近遇到了完全相同的问题。
根据 Oracle 文档:
当应用程序要求传输数据以防止其他实体观察传输内容时,指定 CONFIDENTIAL。 指定 NONE 表示容器必须接受任何连接上的受限请求,包括未受保护的请求。
由于这只是一个传输保证,NONE 值应该为您提供所需的功能,即 EJB Web 服务同时响应 http 和 https 请求。
这里的问题是 Glassfish 中的一个错误,它显然限制您接受对您的 EJB Web 服务的 http 或 https 请求:
Glassfish 2.x 中的错误:https://java.net/jira/browse/GLASSFISH-5621 Glassfish 3.x 中的错误:https://java.net/jira/browse/GLASSFISH-19293根据上一个 jira 任务,该问题应该已得到修复,并且可以从 Glassfish 4.0_b75 开始运行。
【讨论】:
【参考方案2】:只需删除<transport-guarantee>CONFIDENTIAL</transport-guarantee>
,您的 bean 也将在 http 和 https 上可用。
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
表示严格的安全性,任何来的http请求都会重定向到https(ssl)。
删除此<transport-guarantee>CONFIDENTIAL</transport-guarantee>
您将获得极大的灵活性。
【讨论】:
【参考方案3】:为什么不使用 Apache HTTP 服务器或类似服务器代理应用服务器?我通常这样做,并将 SSL 握手/打开文本连接到 HTTP 放在它前面。
【讨论】:
以上是关于Glassfish JAX-WS 并排 SSL / 不安全的 EJB Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
Java Paypal 集成 SOAP JAX-WS - SSL 握手异常