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 認証 = 有効