0

我在 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>

那么有什么我想念的吗

4

1 回答 1

0

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

您需要验证几件事。

  1. 您尝试访问的 Web 服务是否允许匿名访问?网络到网络调用的身份验证可能很棘手
  2. Web 应用程序在什么下运行,IWAM_xxx 或 IUSR_xxx?或者您正在使用以特定身份运行的应用程序池?3.SERVICE帐户可以访问您的Web服务服务器。
于 2012-11-06T11:59:56.643 回答