我有一個在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
沒有什麼變化。手冊指出將使用第一個匹配模式,因此順序是正確的。 –