如何限制访问除wsdl以外的所有内容?

我有一个在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不会被忽略,所以我不喜欢这个解决方案。请提供其他建议吗?

回答:

我有类似的问题,我找到了解决方案。通过POST调用WebServices方法,而通过GET获取WSDL。所以解决方案是只限制POST访问。

security-constraint> 

<web-resource-collection>

<web-resource-name>Some authentification required</web-resource-name>

<url-pattern>/services/MyService</url-pattern>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint><role-name>somebody</role-name></auth-constraint>

</security-constraint>

我使用WebSphere 7 JAXWS,但web.xml配置是所有容器和appservers相同。

回答:

你想有传输层安全性。如果您尝试使用的WS-Security保护您的个人服务 - 你可以保持WSDL开放而被固定服务...

回答:

我有一个应用程序设置这种方式。我有一个登录页面,用户名和密码对用户进行身份验证。只有当有效的用户登录时,他们才有权访问数据和页面。任何与WSDL的连接都不会受到影响,因为它将由WSDL函数调用进行处理。

以上是 如何限制访问除wsdl以外的所有内容? 的全部内容, 来源链接: utcz.com/qa/264592.html

回到顶部