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;
}
これらのメッセージには、内部で何が起こっているのかを説明する例外があります。私の最初の考えは、サービスアカウントにあなたの身元を確認するための適切なAD権限がないということです。 – Sean
良い点 - 私は内側の例外に悩まされ、私が見つけたものを返信します。 –
内部例外を含むポストを更新しました。 401のように見える。私はセキュリティチームと一緒に行くだろう。 –