【发布时间】:2011-11-11 00:24:36
【问题描述】:
我在 Tomcat 6 下部署了一个 web 服务,它运行良好。 现在我想验证任何客户端,但通过 URL 保持 wsdl 处于公共访问状态 http://localhost:8080/services/MyService?wsdl
我试过用这种方式解决问题(webapp的web.xml),但是不行:
<security-constraint>
<web-resource-collection>
<web-resource-name>WSDL access - to anybody</web-resource-name>
<url-pattern>/services/MyService?wsdl</url-pattern>
</web-resource-collection>
<auth-constraint><role-name>*</role-name></auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Some authentification required</web-resource-name>
<url-pattern>/services/MyService</url-pattern>
</web-resource-collection>
<auth-constraint><role-name>somebody</role-name></auth-constraint>
</security-constraint>
我现在看到的唯一解决方案是创建额外的 servlet 并授予一个访问 WSDL 的权限。 servlet 会将所需的 wsdl 传递给客户端,无论它是否经过身份验证。在这种情况下,WSDL URL 不会很明显,所以我不喜欢这个解决方案。请问还有什么建议吗?
【问题讨论】:
-
只是好奇,但是如果你颠倒顺序会发生什么?
-
没有任何变化。手册声明将使用第一个匹配模式,因此顺序是正确的。
标签: java web-services security tomcat wsdl