IIS 7でホストされているNTLMでbasicHttpBindingを使用するWCF Webサービスがあります(匿名認証が無効で、Windows認証が有効です)。パススルー認証を使用する AppPool。Web サービスにリモートで接続するコンソール アプリケーションがあります。
ドメイン ユーザーを使用して接続すると、プロセスは正常に接続されます。ドメインで作成された新しいサービス アカウントを使用して接続すると、次のエラーが発生します。
HTTP 要求は、クライアント認証方式 'Ntlm' では許可されていません。サーバーから受信した認証ヘッダーは「NTLM」でした。
内部例外は次のとおりです。
リモート サーバーがエラーを返しました: (401) 権限がありません。
これはドメイン アカウントまたは認証スキームの問題ですか? エラー メッセージはそれが認証スキームであることを示していますが、同じドメインで作成されたサービス アカウントではなく、なぜ私のアカウントで機能するのでしょうか?
サーバー構成
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
</security>
クライアント消費
public static WMServiceClient CreateWMServiceProxy()
{
var proxy = new WMServiceClient();
proxy.Endpoint.Address = new EndpointAddress( ConfigurationCache.WMServiceEndpoint );
proxy.Endpoint.Binding = new BasicHttpBinding( BasicHttpSecurityMode.TransportCredentialOnly )
{
MaxBufferSize = 2147483647,
MaxReceivedMessageSize = 2147483647
};
( (BasicHttpBinding) proxy.Endpoint.Binding ).Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
return proxy;
}