0

この 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>

だから私が欠けているものはありますか

4

1 に答える 1

0

AFAIK 401 は、「リクエストが HTTP ステータス 401 で失敗しました: Unauthorized」です。

確認しなければならないことがいくつかあります。

  1. アクセスしようとしている Web サービスは、匿名アクセスを許可していますか? 認証は、Web 間呼び出しでは扱いにくい場合があります
  2. IWAM_xxx または IUSR_xxx の下で実行されている Web アプリケーションは何ですか? または、特定の ID で実行されているアプリケーション プールを使用していますか? 3.SERVICE アカウントは Web サービス サーバーにアクセスできます。
于 2012-11-06T11:59:56.643 に答える