У меня есть веб-сервис, развернутый под Tomcat 6, он отлично работает.
Теперь я хочу аутентифицировать любого клиента, но держу wsdl в открытом доступе через URL, например
http://localhost:8080/services/MyService?wsdl
Я пытался решить проблему таким способом (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>
Единственное решение, которое я вижу сейчас, - это создать дополнительный сервлет и дать одно право на доступ к WSDL. Сервлет передаст требуемый wsdl клиенту, независимо от того, аутентифицирован он или нет. В этом случае URL WSDL не будет очевидным, поэтому мне не нравится решение. Любые другие советы, пожалуйста?