1

.NET Windows アプリケーションから HTTPS 経由で Java Web サービスを使用する際に問題が発生しています。Web サービスにはサーバー認証が必要ですが、メソッドを呼び出そうとすると、以下のエラーが発生します。

HTTP 要求は、クライアント認証スキーム「匿名」では許可されていません。サーバーから受信した認証ヘッダーは「Basic realm=login」でした。

Visual Studio でサービス参照として Web サービスを追加しました。ここに私のアプリの構成があります:

<security>セクションで私はこれを持っています:

<security mode="Transport">
  transport clientCredentialType="None" proxyCredentialType="None"
   realm="" />
   <message clientCredentialType="UserName" algorithmSuite="Default" />
 </security>

<httpsTransport>セクションで私はこれを持っています:

<httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
  maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
  bypassProxyOnLocal="false"
  hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true"
  maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
  realm="" transferMode="Buffered" 
  unsafeConnectionNtlmAuthentication="false"
  useDefaultWebProxy="true" requireClientCertificate="false" />

そして、私のコードは次のようになります。

ServiceReference1.servicePortTypeClient service = new ServiceReference1.servicePortTypeClient ("enpointbindingname"); 
service .ClientCredentials.UserName.UserName = "username";          
service .ClientCredentials.UserName.Password = "password";
service.method();
4

1 に答える 1

3

サーバーの応答から、Web サービスには基本的な http 認証が必要なようです。これは、メッセージ レベルではなく、トランスポート レベルでの認証を意味します。したがって、セキュリティ構成は次のようになります。

<security mode="Transport">
    <transport clientCredentialType="Basic" />
</security>

Web サービスが実際に基本認証で HTTPS を使用している場合は、この msdn ページでこのシナリオについて詳しく説明しています。

于 2012-11-15T00:39:09.483 に答える