2

IIS にデプロイされた WCF サービスを作成しました。統合 Windows 認証を選択しました。サービスはこの場合使用できませんが、IIS 仮想ディレクトリの認証方法を WCF サービスの「匿名」に設定できれば、エラーは解消されます。ただし、「匿名」は、WCF サービスでは受け入れられません。クライアントを認証するには、統合 Windows 認証を使用する必要があります。誰でもこの問題を解決する方法を知っていますか?

前もって感謝します、

アシッシュ

4

2 に答える 2

7

あなたはいくつかのことをしなければなりません:

  • 仮想フォルダーからの匿名アクセスのチェックを外し、統合 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」を実行してローカルにアカウントを作成します

于 2010-09-07T19:50:27.400 に答える
1

注意する必要がある主な点は次の 2 つです。

  1. 構成は調整されていますか: IIS、web.config (system.web および WCF)
  2. クライアントはリクエストで Windows 認証情報を送信していますか

問題を引き起こしているのはおそらく2番目です。IIS ログには、どのユーザーが呼び出しを行っているかが含まれている必要があります。

于 2009-09-02T13:44:12.513 に答える