具有Web服务身份验证的异常401

时间:2012-10-30 11:09:10

标签: java-ee soap weblogic ws-security

我在WEBLOGIC服务器上运行此Web服务。将URL WSDL粘贴到浏览器时,一切似乎都很好,浏览器提示输入用户名,密码。但是在客户端中,当我使用与服务器相同的身份验证调用服务时,服务器响应为401异常。

这是我的客户代码

SupplierService service = new SupplierService();
port = service.getSupplierPort();
Map<String, Object> rc = ((BindingProvider)port).getRequestContext();
rc.put(BindingProvider.USERNAME_PROPERTY, "username");
rc.put(BindingProvider.PASSWORD_PROPERTY, "pass");

port.hello();

这是我的web.xml配置(url wsdl是:localhost / shop / SupplierService?WSDL)

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Web service resources</web-resource-name>
        <url-pattern>/SupplierService</url-pattern>
    </web-resource-collection>

    <auth-constraint>
        <role-name>suppliers</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <role-name>suppliers</role-name>
</security-role>

这是我的weblogic.xml

<wls:context-root>ass</wls:context-root>

<wls:security-role-assignment>
        <wls:role-name>suppliers</wls:role-name>
        <wls:principal-name>SupplierGroup</wls:principal-name>
</wls:security-role-assignment>

所以我有什么遗漏

1 个答案:

答案 0 :(得分:0)

AFAIK 401用于“请求失败,HTTP状态为401:未经授权。”

您需要验证几件事。

  1. 您尝试访问的网络服务是否允许匿名访问?对于网络到网络呼叫,身份验证可能很棘手
  2. 在IWAM_xxx或IUSR_xxx下运行的Web应用程序是什么?或者您使用的是以特定身份运行的应用程序池吗? 3.SERVICE帐户可以访问您的Web服务服务器。