wsHttpBinding および TransportWithMessageCredential に対して、次のバインディング構成 (スペースのバインディングからすべての属性を削除しました) を持つ IIS でホストされた WCF サービスがあります。
<wsHttpBinding>
<binding name="BindingName" .../>
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
次のサービス動作で:
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Windows" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
匿名認証が無効になり、Windows 認証が有効になります。
クライアント側では、有効な Windows ユーザーとパスワードを使用して資格情報が設定されていますが、サービスを呼び出すたびに次の例外が発生します。
HTTP 要求は、クライアント認証スキーム「匿名」では許可されていません。サーバーから受信した認証ヘッダーは「Negotiate,NTLM」でした。---> System.ServiceModel.Security.MessageSecurityException: HTTP 要求は、クライアント認証方式 'Anonymous' で承認されていません。サーバーから受信した認証ヘッダーは「Negotiate,NTLM」でした。---> System.Net.WebException: リモート サーバーがエラーを返しました: (401) Unauthorized.
WCF サービスの自己ホスト型バージョンでは、有効な Windows アカウントで正常に動作します。
どんな助けでも大歓迎です。