4

Windows 認証と ASP.NET 偽装を使用して、IIS7 経由で WCF サービスに対してユーザーを認証しています。

ローカルでデバッグすると、System.Security.Principal.WindowsIdentity.GetCurrent().Name が Windows 資格情報と同じであることがわかります。このサービスをサーバーに展開すると、匿名認証が有効になっていない限り、WCF の実行に失敗します。

では、匿名認証が無効になっているサーバーでこの WCF サービスを実行するにはどうすればよいでしょうか。

更新 1 : 両方の提案を試した後のエラー メッセージ:

ホスト ('IntegratedWindowsAuthentication') で構成された認証スキームは、バインディング 'WebHttpBinding' ('Anonymous') で構成されたものを許可しません。SecurityMode が Transport または TransportCredentialOnly に設定されていることを確認してください。さらに、この問題は、IIS 管理ツール、ServiceHost.Authentication.AuthenticationSchemes プロパティ、アプリケーション構成ファイル内のエレメント、バインディングの ClientCredentialType プロパティの更新、または調整によって、このアプリケーションの認証スキームを変更することによって解決される場合があります。 HttpTransportBindingElement の AuthenticationScheme プロパティ。

更新 2 : 認証は次のように設定されています。

アプリケーション プール:

  • ID = NetworkService

Webサイト:

  • 匿名認証 = 無効
  • ASP.NET 認証 = 有効
  • Windows 認証 = 有効

WCF アプリケーション:

  • 匿名認証 = 無効
  • ASP.NET 認証 = 有効
  • Windows 認証 = 有効
4

3 に答える 3

3

これはよくある問題です。セキュリティ モードと対応するトランスポート要素を設定する必要があります。basicHttpBinding を使用する場合は、次のテキストを構成に入れます。

<basicHttpBinding>
   <binding>
     <security mode="TransportCredentialOnly">
     <transport clientCredentialType="Windows" />
     </security>
   </binding>
</basicHttpBinding>

次の投稿を読む - http://blogs.msdn.com/b/drnick/archive/2007/03/23/preventing-anonymous-access.aspx http://blogs.msdn.com/b/wenlong/archive/2006 /05/18/600603.aspx

于 2013-08-02T18:59:26.493 に答える
1

エラーの理由の 1 つは、ASP.net をホストしているサーバーで kerberos 委任を有効にする必要があることです。これにより、Windows 認証トークンを WCF サービス ホスティング サーバーに伝達できます。

次のリンクをご覧ください

WCF での偽装と委任

于 2013-08-06T12:07:17.887 に答える
0

同じ問題がありました。私の場合、アプリケーションの IIS で Windows 認証が有効になっていないことが原因でした。

  1. IIS を開く
  2. Web アプリケーションを選択してください
  3. 認証アイコン (IIS) をクリックします。
  4. Windows 認証を有効にする
于 2013-10-14T13:05:09.697 に答える