.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();