【问题标题】:How to restrict access to everything but wsdl?如何限制对除 wsdl 之外的所有内容的访问?
【发布时间】: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


【解决方案1】:

我遇到了类似的问题,我已经找到了解决方案。 WebServices 方法是通过 POST 调用的,而 WSDL 是通过 GET 获取的。所以解决方案是只限制 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>

我正在使用带有 JAXWS 的 WebSphere 7,但 web.xml 配置对于所有容器和应用服务器都是相同的。

【讨论】:

【解决方案2】:

您正在尝试获得传输级别的安全性。如果您尝试使用 ws-security 保护您的个人服务 - 您可以在服务受到保护的同时保持 wsdl 打开...

【讨论】:

  • 不,不是相反。他希望保持 wsdl 开放并保护所有其他服务。
  • 这不是相反的。这就是您保护服务但仍保持 wsdl 开放的方式。
  • 我已经改变了问题。现在可能更清楚了。 ws-security 似乎是我项目的未来,但现在没有时间处理。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多