2012-04-25 20 views
4

IIS 7でホストされているNTLM(匿名認証が無効で、Windows認証が有効)でbasicHttpBindingを使用しているWCF Webサービスがあります。パススルー認証を使用するAppPool。私はリモートからWebサービスに接続するコンソールアプリケーションを持っています。NTLMを使用してWCF Webサービスでコンソールアプリケーションを認証するにはどうすればよいですか?

ドメインユーザーを使用して接続すると、プロセスは正常に接続されます。

The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'.

内部例外がある:

The remote server returned an error: (401) Unauthorized.

が、これはドメインアカウントの問題ですか、私の認証スキームIは、ドメイン上で作成した新しいサービスアカウントを使用して接続した場合、私は次のエラーを取得します?エラーメッセージはそれが認証スキームであることを意味しますが、同じドメイン上に作成されたサービスアカウントではなく、自分のアカウントではなぜ機能するのでしょうか?

Serverのコンフィグ

<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; 
} 
+0

これらのメッセージには、内部で何が起こっているのかを説明する例外があります。私の最初の考えは、サービスアカウントにあなたの身元を確認するための適切なAD権限がないということです。 – Sean

+0

良い点 - 私は内側の例外に悩まされ、私が見つけたものを返信します。 –

+0

内部例外を含むポストを更新しました。 401のように見える。私はセキュリティチームと一緒に行くだろう。 –

答えて

1

ソリューション:私が最初に考えていたようにこれは実際にWCFのエラーではありませんでした。 Inner Exceptionを記録すると、「401 - Unauthorized」エラーが発生していることがわかりました。私が作成したサービスアカウントは、サービスホストマシンへのリモート接続アクセスが与えられていないことがわかります。アクセス権を付与してサービスアカウントをユーザーとして追加すると、プロセスは正しく接続されました。

関連する問題