我在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>
所以我有什么遗漏
答案 0 :(得分:0)
AFAIK 401用于“请求失败,HTTP状态为401:未经授权。”
您需要验证几件事。