web-dev-qa-db-ja.com

ASP.NET MVC 4のWindows認証-仕組み、テスト方法

ASP.NET MVC WebアプリケーションにWindows認証を使用したことはありませんが、フォーム認証を使用しました。最近、会社のWebサーバーへのログインを許可されたユーザーにWindows認証の実装を必要とするASP.NET MVC 4 Webアプリケーションがありました。そのため、Windows認証に関していくつか質問があります。 Visual Studio 2012を使用しています。

  • Windows認証はどのように機能しますか?

  • Web.configファイルにWindows認証を正しく実装するにはどうすればよいですか?

  • ASP.NET MVC 4 WebサイトでWindows認証が本当に機能するかどうかをテストするにはどうすればよいですか?つまり、ローカルの [〜#〜] iis [〜#〜] (バージョン8)を使用してローカルの開発用PCでテストし、IISバージョン7?

39
Thomas.Benz

ASP.NET MVC WebサイトのWindows認証を実装およびテストするための手順を段階的に示すことで、非常に役立つ有益なビデオを見つけました。それで、この質問を閉じます。

非常に親切なポスターからのビデオ:

ASP.NET MVC 3(モデルビューコントローラー)アプリケーションでWindows認証を実装する方法?

9
Thomas.Benz

IIS 8.5およびMVC 4の場合:

Windows認証の仕組み

このモードでは、User.IdentityHttpContext.Current.User.Identityのように)は、基礎となるWebサーバーによって入力されます。これは、IIS @R Kumarからのリンクでの明示的なデモ、または@Thomas Benzのビデオのように本格的なIISである可能性があります。

具体的には、User.IdentityはWindowsIdentityオブジェクトです。例えば。次のキャストが機能します。

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;

web.configファイルにWindows認証を正しく実装するにはどうすればよいですか

  <system.web>
    <authentication mode="Windows" />
  ...

ASP.NET MVC 4 WebサイトでWindows認証が本当に機能するかどうかをテストするにはどうすればいいですか?つまり、local IIS (バージョン8)、およびIISバージョン7?の会社の実際のWebサーバー

まず、現在のユーザーを除外するようにASP.NET承認を変更します。例えば。

  <system.web>
    <authentication mode="Windows" />
    <authorization>
      <allow users="yourdomain\someotheruser" />
      <deny users="*" />
    </authorization>

次に、IIS Managerを使用してサイトのWindows認証を有効にします。「認証」機能の下にあります。And匿名を無効にします認証。

古い説明では、サイトのweb.configの要素の下で変更を行うことをお勧めします。ただし、最近のIIS=実装はセキュリティ上の理由からこれを防ぎます。

3つ目は、ブラウザでWebページにアクセスすることです。現在のユーザーはWebサイトへのアクセスを許可されていないため、ブラウザーは資格情報の提供を要求する必要があります。サイトに許可されているものを提供すると、MVCコードが実行されます。

4、ユーザーIDを確認します。例えば。

WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
33
Donal Lafferty

ASP.NET MVC 1.0でこれを実行しました。それは比較的長い時間前でした。 IIS設定が混乱していることを思い出します。チェックを行っただけで、コントローラーの属性に関する限り、ASP.NET MVC 4.0に大きな変化は見られません。

ご質問:

  1. どのように機能しますか?以下の参考文献は、物事をかなりうまくまとめています。 Windows認証(C#)でユーザーを認証するはASP.NET MVC 4.0には正確ではありませんが、ある程度の背景があります。

    ASP.NET MVCを使用してイントラネットサイトを作成する方法はASP.NET MVC 3.0用です。

    3つ以上のリンクを投稿するにはあまりにも新しいので、MSDNで.NET Framework 4の "AuthorizeAttribute Class"を検索する必要があります。

  2. Web.configの設定は何ですか? -「認証モード」という1つの要素を変更したことを覚えています。

  3. テストに関しては、私のWindows OSバージョンはよりよく一致しており、私の開発マシンは同じWindowsドメインにありました。しかし、私が正しく覚えていれば、これはうまくいきました。 [〜#〜] ymmv [〜#〜] 、しかし、私が考慮していることを覚えていることの1つは、独自の認可の実装でした。たぶんそれはあなたのケースのための道であり、あなた自身のものをロールバックしてから、本番環境でWindows認証に切り替えます。ただし、会社のドメインでテストサーバーをセットアップできる場合は、テストサーバーで2、3回テストを繰り返すことをお勧めします。

10
BillH