IIS にデプロイされた WCF サービスを作成しました。統合 Windows 認証を選択しました。サービスはこの場合使用できませんが、IIS 仮想ディレクトリの認証方法を WCF サービスの「匿名」に設定できれば、エラーは解消されます。ただし、「匿名」は、WCF サービスでは受け入れられません。クライアントを認証するには、統合 Windows 認証を使用する必要があります。誰でもこの問題を解決する方法を知っていますか?
前もって感謝します、
アシッシュ
IIS にデプロイされた WCF サービスを作成しました。統合 Windows 認証を選択しました。サービスはこの場合使用できませんが、IIS 仮想ディレクトリの認証方法を WCF サービスの「匿名」に設定できれば、エラーは解消されます。ただし、「匿名」は、WCF サービスでは受け入れられません。クライアントを認証するには、統合 Windows 認証を使用する必要があります。誰でもこの問題を解決する方法を知っていますか?
前もって感謝します、
アシッシュ
あなたはいくつかのことをしなければなりません:
次のバインド構成を作成します。
<basicHttpBinding>
<binding name="Binding1">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
上記の構成をサービスと mex に適用します。
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService">
</endpoint>
<endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange">
</endpoint>
クライアントを作成し、NetworkCredential を使用して資格情報を渡します。
ServiceReference.MyClient proxy = new ServiceReference.MyClient();
proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd");
proxy.YourServiceOperation();
ユーザー名とパスワードを個別に設定する方法は他にもありますが、.Net 4.0 では機能しませんでした。USERACCOUNT は、WCF ホスト コンピューターが参加しているドメイン アカウントまたは LDAP です。サーバーがドメインに参加していない場合は、「lusrmgr.msc」を実行してローカルにアカウントを作成します
注意する必要がある主な点は次の 2 つです。
問題を引き起こしているのはおそらく2番目です。IIS ログには、どのユーザーが呼び出しを行っているかが含まれている必要があります。