我在 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>
那么有什么我想念的吗