この Web サービスは、WEBLOGIC サーバーで実行します。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>
だから私が欠けているものはありますか