VB.NETで記述されたASP.NET Webアプリケーションがあります。アプリケーションの一部がAJAXを呼び出して内部ASMXファイルを呼び出し、次に、単一のASMXファイルであるリモートWebサービスを呼び出します。通常、これは正常に機能し、デプロイされています。数回実行すると正常に動作しますが、1つのクライアントがAJAX呼び出しからメッセージを取得しています:
HTTP要求は、クライアント認証方式「匿名」では無許可です。サーバーから受信した認証ヘッダーは「NTLM」でした。
これを修正するために大量のWebサイトを調べましたが、自分に役立つ答えを見つけることができません。
クライアントのWin2003 IIS6と同じテストサーバーでエラーを再現できませんでした。
リモートWebサービスは、Windows 2008 r2 – IIS7.5にデプロイされます。リモートサービスは「匿名」認証のみを使用してデプロイされます。クライアントの導入は、匿名の「統合Windows認証」で設定されています。両方の実装で認証レベルを変更しようとしましたが、問題を再現できません。私が近づいたのは、リモートサービスを設定したときですIIS authentication to
HTTP要求は、クライアント認証方式「Ntlm」では不正です。サーバーから受信した認証ヘッダーは ''でした。
Web.configファイルでは、リモートサービスへの参照は次のとおりです。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SVCMappingSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://svc.website.com/services/myService.asmx" binding="basicHttpBinding" bindingConfiguration="SVCMappingSoap" contract="SVCMappingService.SVCMappingSoap" name="SVCMappingSoap"/>
</client>
</system.serviceModel>
<security>
セクションのいくつかの設定を変更しようとしましたが、まだ複製できません。
サーバー全体の設定はわかりません。
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
</security>
上記の代わりに、以下の設定で試してください
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
以下のリンクを参照してください。それらについてさらに考え、要件に基づいて構成を変更できます。
生成されたデフォルトを変更する必要がありました
<security mode="Transport"/>
に
<security mode="Transport" >
<transport clientCredentialType="Ntlm"/>
</security>
この問題に対するもう1つのコメント:
HTTPSを使用していない場合は、
<security mode="Transport"/>
はサポートされていません。使用できます
<security mode="TransportCredentialOnly">
代わりに。