ASP.NET で Windows 認証および Windows 承認を実装する方法


概要


この資料では、ASP.NET アプリケーションで Windows 認証および Windows 承認を実装する方法について順を追って説明します。


Windows および ASP.NET の組み込みセキュリティを使用するには、グループとユーザーに認証および承認を実装します。Windows 認証を使用するには、Microsoft インターネット インフォメーション サービス (IIS) と ASP.NET アプリケーションの Web.config ファイルの両方で設定を調整する必要があります。

必要条件

  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、または Windows XP Professional
  • Microsoft .NET Framework
  • Microsoft インターネット インフォメーション サービス (IIS)
  • Microsoft Visual Studio .NET

詳細


認証と承認

Windows "認証 (authentication)" と Windows "承認 (authorization)" という 2 つの用語はよく混同して使用されますが、内容は同じではありません。Windows 認証を使用すると、認証の受け入れ側がユーザーの ID を決定できるようになります。一方、Windows 承認では、ユーザーがアクセスできるリソースが決定されます。

Web アプリケーションを構成して Windows 認証を使用できるようにする

Web アプリケーションを構成して Windows 認証を使用できるようにするには、以下の手順を実行します。
  1. ASPNETWinAuth という名前の ASP.NET Web アプリケーションを作成します。デフォルトでは、WebForm1.aspx ファイルが表示されます。
  2. WebForm1.aspx の HTML ビューで、既存のコードを次のサンプル コードと置き換えます。
    <%=User.Identity.Name%>
  3. [スタート] ボタンをクリックし、[プログラム]、[管理ツール] を順にポイントし、[インターネット インフォメーション サービス] をクリックします。
  4. インターネット インフォメーション サービス MMC スナップインが表示されます。[コンピュータ] を展開し、Windows 認証を使用する Web サイトを展開します。
  5. Web サイト アプリケーション [ASPNETWinAuth] をクリックします。
  6. [操作] メニューの [プロパティ] をクリックします。
  7. [プロパティ] ダイアログ ボックスで、[ディレクトリ セキュリティ] タブをクリックします。
  8. [匿名アクセスおよび認証コントロール] の [編集] をクリックします。
  9. [認証方法] で、[統合 Windows 認証] チェック ボックスをオンにします。他のチェック ボックスはすべてオフにします。
  10. [OK] をクリックします。
  11. [プロパティ] ダイアログ ボックスで、[OK] をクリックします。これで、ASPNETWinAuth Web アプリケーションは、有効なユーザー アカウントを受け入れるように構成されました。

ASP.NET アプリケーションを構成する

IIS Web サイトを構成して統合 Windows 認証が使用できるようになったら、認証済みのユーザーが認識されるように ASP.NET アプリケーションを構成する必要があります。これを行うには、Web.config ファイルを変更する必要があります。Web.config ファイルで <authentication> タグを見つけ、次の例のように、mode 属性を Windows に設定します。
<authentication mode="Windows" />

認証をテストする

Windows 認証の設定をテストするには、以下の手順を実行します。
  1. Microsoft Internet Explorer で WebForm1.aspx ページを表示します。このページは次の例に示すように、http://Localhost フォルダにあります。
    http://Localhost/ASPNETWinAuth/WebForm1.aspx
    統合 Windows 認証では、クライアント コンピュータ上に存在する、現在の Windows ユーザーの情報を使用して認証を行うため、ユーザー名とパスワードの入力を求めるダイアログ ボックスが直ちに表示されるわけではありません。認証交換によってユーザーを特定できない場合、Windows ユーザー アカウントのユーザー名とパスワードの入力を求めるダイアログ ボックスが表示されます。
  2. 有効なユーザー名とパスワードを入力します。ページが読み込まれると、ユーザー名が次の形式で表示されます。
    Domain Name\User Name

アクセス許可を制限する

ASP.NET では、Web.config ファイルに設定を追加することによってアプリケーションへの承認を設定します。どのユーザーまたはグループがどのリソースにアクセスできるかを指定するには、次の手順を実行します。
  • Managers という NT グループに属するすべてのメンバにリソースへのアクセスを許可するには、次のコードを使用します。
    <configuration>
    <system.web>
    <authorization>
    <allow roles="domainname\Managers" />
    <deny users="*" />
    </authorization>
    </system.web>
    </configuration>
  • 特定のユーザーにのみアクセスを許可するには、次のコードを使用します。
    <configuration>
    <system.web>
    <authorization>
    <allow users="domainname\user1,domainname\user2,domainname\user3" />
    <deny users="*" />
    </authorization>
    </system.web>
    </configuration>
    : 一覧をコンマで区切ることにより、複数のロールやユーザーを指定できます。構成ファイルの要素および関連する属性値を指定する際は、大文字小文字が正しく使用されていることを確認してください。このコードでは、大文字と小文字が区別されます。

関連情報


ASP.NET のセキュリティおよび構成の概要の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
306590
[INFO] ASP.NET のセキュリティの概要
307626
[INFO] ASP.NET の構成の概要
authentication 要素および authorization 要素の詳細については、次のマイクロソフト Web サイトを参照してください。