我有一个在Tomcat 6下部署的webservice,它可以很好地工作。 现在我想authentificate任何客户端,而是通过URL保持WSDL公开存取像 http://localhost:8080/services/MyService?wsdl如何限制访问除wsdl以外的所有内容?
我试图解决这个问题这样(Web应用程序的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不会被忽略,所以我不喜欢这个解决方案。请提供其他建议吗?
只是好奇,但如果你扭转秩序会发生什么? – cwallenpoole
没有什么变化。手册指出将使用第一个匹配模式,因此顺序是正确的。 –