Windows セキュリティを使用して ASP.NET アプリケーションをセキュリティで保護する方法

文書翻訳 文書翻訳
文書番号: 315736 - 対象製品
この記事は、以前は次の ID で公開されていました: JP315736
すべて展開する | すべて折りたたむ

目次

概要

ASP.NET は Microsoft Internet Information Services (IIS) と連携して、Microsoft Windows 2000 のユーザー アカウント資格情報を基に Web ユーザーを認証できます。また、ASP.NET 実行エンジンは、Web ユーザーを偽装するように構成したり、独自の Windows の識別情報を使用してデータベースやファイルなどのリソースにアクセスするように構成したりできます。

必要条件

この資料に示す手順を実行するには、次のハードウェア、ソフトウェア、およびネットワーク インフラストラクチャが必要です。
  • Service Pack 2 (SP2) を適用済みの Windows 2000 Server
  • IIS 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio .NET
また、次のような知識も必要になります。
  • Visual Basic .NET による ASP.NET 開発
  • IIS の管理
  • Windows 2000 ユーザー アカウントの管理

Web サイトの開発方法

次の手順では、Windows 認証によってセキュリティ保護される、単純な ASP.NET Web アプリケーションを作成します。
  1. Visual Studio .NET を起動し、"WindowsSite" という名前の Visual Basic ASP.NET Web アプリケーションを新規作成します。
  2. Label コントロールをツールボックスから Web フォームの WebForm1.aspx にドラッグし、ID プロパティを authUserPrincipalLabel に設定します。
  3. Label コントロールをもう 1 つ、Web フォームの WebForm1.aspx にドラッグし、ID プロパティを aspPrincipalLabel に設定します。
  4. WebForm1.aspx をダブルクリックしてコード ウィンドウを開き、次の Imports ステートメントをクラス宣言の先頭に追加します。
    Imports System.Security
    
    次のコードを Page_Load イベント プロシージャに追加します。
    Dim authUserName As String
    Dim aspUserName As String
    authUserName = User.Identity.Name
    aspUserName = Principal.WindowsIdentity.GetCurrent.Name
    authUserPrincipalLabel.Text = "You are: " & authUserName
    aspPrincipalLabel.Text = "This page runs as: " & aspUserName
    
  5. プロジェクトの Web.config ファイルを開き、authentication 要素を探します。mode 属性が "Windows" であることを確認します。
  6. プロジェクトをビルドし、保存します。
  7. プロジェクトを実行し、ページに次のメッセージが表示されることを確認します。
    You are:
    This page runs as:ドメインまたはサーバー\ASPNET
    : IIS によって認証されていないため、ユーザー名は表示されません。この時点では、まだ匿名アクセスが有効になっています。
  8. Internet Explorer を終了してプロジェクトを停止します。

匿名アクセスを無効にする方法

次の手順では、IIS が WindowsSite に対して Windows 統合認証を必要とするように構成します。
  1. Visual Studio を最小化します。[管理ツール] プログラム グループの [インターネット サービス マネージャ] を起動します。
  2. サーバーと [既定の Web サイト] を展開し、WindowsSite サイトを右クリックして、[プロパティ] をクリックします。
  3. [WindowsSite のプロパティ] ダイアログ ボックスの [ディレクトリ セキュリティ] タブで、[匿名アクセスおよび認証コントロール] の [編集] をクリックします。
  4. [匿名アクセス] チェック ボックスをオフにし、[統合 Windows 認証] チェック ボックスがオンであることを確認したら、[OK] をクリックします。
  5. [OK] をクリックして [WindowsSite のプロパティ] ダイアログ ボックスを閉じます。
  6. Visual Studio に切り替え、プロジェクトを実行します。ページに次のメッセージが表示されることを確認します。
    You are:Windows ユーザー名
    This page runs as:ドメインまたはサーバー\ASPNET
    : Windows アカウントによって認証されました。まだ Windows にログオンしていない場合は、Windows ユーザー名とパスワードの入力を求めるメッセージが表示されます。
  7. Internet Explorer を終了してプロジェクトを停止します。

偽装を有効にする方法

次の手順では、WindowsSite にアクセスする Windows ユーザーを偽装するように WindowsSite アプリケーションを構成します。
  1. Visual Studio で、WindowsSite プロジェクトの Web.config ファイルを開きます。
  2. 次の要素を authentication 要素の後に追加します。
    <identity impersonate = "true" />
    
  3. Web.config ファイルを保存します。
  4. プロジェクトを実行します。ページに次のメッセージが表示されることを確認します。ASP.NET 実行エンジンが Windows 資格情報を使用し、ユーザーに代わってリソースにアクセスします。
    You are:Windows ユーザー名
    This page runs as:Windows ユーザー名
  5. Internet Explorer を終了してプロジェクトを停止します。

カスタム プリンシパルの割り当て方法

次の手順では、WindowsSite アプリケーションでカスタム セキュリティ プリンシパルを使用するように構成します。
  1. [管理ツール] プログラム グループの [コンピュータの管理] を起動します。新しい Windows 2000 ユーザー アカウントを、ユーザー アカウント名 "WindowsSite"、パスワード "password" として作成します (サーバーがドメイン コントローラである場合には、[Active Directory ユーザーとコンピュータ] ツールを使用します)。
  2. [ユーザーは次回ログオン時にパスワード変更が必要] チェック ボックスをオフにします。

    : 選択するカスタム プリンシパルには、次の「サポート技術情報」 (Microsoft Knowledge Base) で説明するアクセス許可が必要です。
    317012 ASP.NET のプロセス ID と要求 ID
  3. WindowsSite アカウントが作成されたら、使用した管理ツールを閉じます。
  4. Visual Studio で、WindowsSite プロジェクトの Web.config ファイルを開きます。
  5. 次のように、identity 要素を編集します。
    identity impersonate = "true" userName = "ドメインまたはサーバー名\WindowsSite"
    password = "password"/>
    ドメインまたはサーバー名 は、(ドメイン環境内の) Windows 2000 ドメイン名、または (ワークグループ環境内の) コンピュータ名です。
  6. Web.config ファイルを保存します。
  7. プロジェクトを実行します。次のメッセージと共にページが表示されることを確認します。
    You are:Windows ユーザー名
    This page runs as:ドメインまたはサーバー名\WindowsSite
    : Aspnet_wp.exe は、指定した Windows 資格情報を使用し、ユーザーに代わってリソースにアクセスします。
  8. Internet Explorer を終了してプロジェクトを停止します。

トラブルシューティング

NTFS ファイル アクセス許可を使用すると、ASP.NET Web サイトの Windows セキュリティをさらに強力かつ複雑にすることができます。Windows アカウントに ASP.NET Web ページに対する読み取りアクセス許可がない場合、IIS は代わりの Windows 資格情報を要求するメッセージを表示します。同様に、ASP.NET 実行エンジンで使用されるセキュリティ プリンシパルがアクセス許可を持っていないファイルに対して、ASP.NET ページがアクセスを試みた場合も、代わりの資格情報を要求するメッセージが表示されます。NTFS アクセス許可は、Web サイトのサブセクションへのアクセスを制御する効果的な方法です。

関連情報

ASP.NET Web サイトでの Windows 認証の使用方法の詳細については、.NET Framework ドキュメントで ASP.NET Web アプリケーションの「セキュリティ」のトピックを参照してください。

また、次の MSDN Web サイトの 「ASP.NET における認証 : .NET セキュリティ ガイド」 も参照してください。
http://www.microsoft.com/japan/developer/net/dnBDA/authaspdotnet.asp

プロパティ

文書番号: 315736 - 最終更新日: 2005年10月13日 - リビジョン: 3.5
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET (included with the .NET Framework)
  • Microsoft Internet Information Services version 5.0
キーワード:?
kbcodesnippet kbconfig kbgrpdsasp kbhowto kbhowtomaster kbinfo kbsecurity KB315736
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com