情報: ASP.NET の「セキュリティの概要

文書翻訳 文書翻訳
文書番号: 306590
この記事は、以前は次の ID で公開されていました: JP306590
次の Microsoft .net にこの記事を参照します。Framework クラス ライブラリの名前空間。
  • System.Web.Security
  • System.Web.Principal
すべて展開する | すべて折りたたむ

目次

概要

この資料で ASP.NET を紹介します。セキュリティ。

ASP.NET より詳細な概要については、次を参照してください。(Microsoft Knowledge Base) の資料:
305140 ASP.NET ロードマップを情報:

詳細

ASP.NET、セキュリティの実装をより詳細に制御をできます。アプリケーション。Microsoft インターネット インフォメーション サービスと ASP.NET セキュリティの動作します。(IIS) のセキュリティとサービス認証および承認にはが含まれています。ASP.NET のセキュリティ モデルを実装します。ASP.NET は、ロール ベースも含まれています両方の Windows に実装できるセキュリティ機能とWindows 以外のユーザー アカウント。

この資料では、次のように分かれていますセクション:

要求がセキュリティの流れ

一連のイベントをクライアントとすると、次の手順の概要を説明します。要求します。
  1. クライアントが IIS に存在する .aspx ページを要求します。サーバーです。
  2. クライアントの資格情報が IIS に渡されます。
  3. IIS がクライアントを認証し、認証を転送します。トークンがクライアントの要求を ASP.NET ワーカー プロセスと共に。
  4. IIS から認証済みトークンに基づいて、ASP.NET の Web アプリケーションの構成設定を決定するかどうか要求を処理しているスレッドでユーザーを偽装します。明確なMicrosoft Active Server Pages (ASP) と ASP.NET、ASP.NET との違いありませんもう既定で、認証されたユーザーを偽装します。偽装を有効にするには、true を指定する Web.config ファイルで偽装属性の識別] セクションを設定する必要があります。
セキュリティのフローの詳細についてを参照してください、ここで、.NET Framework ソフトウェア開発キット (SDK)ドキュメント:
ASP.NET のデータ ・ フロー
.aspx の http://msdn.microsoft.com/en-us/library/xa68twcb (vs.71)
詳細についてはASP.NET に偽装して、記事を表示するには、次の文書番号をクリックします。技術情報:
306158 情報: ASP.NET アプリケーションに偽装を実装します。

関連する構成設定

IIS で、IIS のセキュリティ関連の構成設定を維持します。メタベース。ただし、セキュリティ (および他の) ASP.NET を保持の構成拡張マークアップ言語 (XML) 構成ファイルに設定します。この一般に、セキュリティはアプリケーションの導入が簡単になります観点は、アプリケーションが採用するセキュリティ モデルが必要になります、IIS メタベースと、ASP.NET アプリケーションの適切な構成その構成ファイル (Web.config)。

次に、構成セクション ASP.NET のセキュリティに関連しています。

認証

認証によって、識別情報を取得するプロセスです。ユーザーの名前やパスワードなどの資格情報し、それらの資格情報を検証します。いくつかの機関から。

ASP.NET 認証の 4 つ用意されています。プロバイダー:

フォーム認証

フォーム認証システムへの参照では、認証されていません。要求をリダイレクトするには、ハイパー テキスト マークアップ言語 (HTML) 形式ではユーザーは、各自の資格情報を入力します。ユーザーが資格情報を入力し、送信後要求、およびシステムの問題は、アプリケーションを認証します。認証チケットは cookie の形式で。この cookie が含まれています、資格情報または id を再取得するためのキー。その後の要求から、ブラウザーは、cookie に自動的があります。

詳細についてはフォーム認証では、.NET Framework の SDK の次のトピックを参照してください。ドキュメント:
フォーム認証プロバイダー
.aspx の http://msdn.microsoft.com/en-us/library/907hb5w9 (vs.71)
のASP.NET でのフォーム認証の詳細については記事をクリックします。「サポート技術情報」資料を参照するには、次の番号:
301240 ハウツー解説: フォーム ベースを実装 C# .net を使用して、ASP.NET のアプリケーションでの認証

Windows 認証

Windows 認証では IIS 認証を実行して認証トークンは、ASP.NET のワーカー プロセスに転送されます。Windows を使用する利点認証は、最小限のコーディングが必要なことです。Windows を使用することができます。IIS 認証が Windows ユーザー アカウントを偽装するための認証前に ASP.NET に要求を渡します。

詳細についてはWindows 認証については、.net では、次のトピックを参照してください。Framework SDK ドキュメント:
WindowsAuthenticationModule プロバイダー
.aspx の http://msdn.microsoft.com/en-us/library/907hb5w9 (vs.71)

Passport 認証

パスポート認証は、集中化された認証サービスで、マイクロソフトは、シングル ログオン機能とコア プロファイル サービスを提供しています提供メンバーのサイトに対して。必要がある場合は、通常、Passport 認証が使用されます。1 つのログに複数のドメイン間で機能します。

詳細についてはPassport 認証の詳細についてを参照してくださいするには、次のトピックで、.NET Framework のセクションを参照します。
パスポート認証プロバイダー
.aspx の http://msdn.microsoft.com/en-us/library/f8e50t0f (vs.71)

既定の認証

既定の認証を使用する任意のセキュリティ必要がない場合Web アプリケーションで。匿名アクセス用のセキュリティ必要がプロバイダーです。すべての認証プロバイダーによっては、既定の認証を提供します。最大のパフォーマンスをアプリケーションの。この認証プロバイダーでもあります。独自のカスタム セキュリティ モジュールを使用する場合に使用します。

承認

承認と検証のプロセスである、認証済みユーザーは、要求されたリソースへのアクセスを持っています。

ASP.NET を提供しています、次の認証プロバイダー。

FileAuthorization

許可すクラス ファイル承認を実行して、使用する場合は、アクティブになっています。Windows 認証です。許可すに Windows のアクセス制御のチェックを実行するのにはリスト (Acl)、ユーザー アクセスが許可されているかどうかを決定します。

UrlAuthorization

UrlAuthorizationModuleクラスは、統一されたリソース ロケーター (URL) の承認を実行、URI 空間に基づいて承認を制御します。名前空間の URI を指定できます。フォルダーとファイルの物理パスは、NTFS アクセス許可使用します。

UrlAuthorizationModuleは両方の正と負の承認アサーションを実装します。このモジュールを使用して選択的に許可または拒否するには、任意の部分の URI の名前空間をユーザー、ロール (マネージャーなどテスト担当者、および管理者)、および動詞 (GET や POST) など。

のASP.NET での承認の詳細については、次のトピックを参照してください。.NET Framework SDK ドキュメントにします。
ASP.NET の承認
.aspx の http://msdn.microsoft.com/en-us/library/wce3kxhd (vs.71)

ロール ベースのセキュリティ

ASP.NET でのロールベースのセキュリティ ロールベースに相当します。セキュリティは、Microsoft COM + および Microsoft トランザクション サーバー (MTS) を使用します。重要な違いがありますがします。ロール ベース セキュリティでは、ASP.NET ではありません。Windows アカウントおよびグループに制限されます。たとえば場合、Windows 認証偽装が有効になっている、ユーザーの id は、Windows id です。(User.Identity.Name = の「ドメイン \ ユーザー名」)。Id を確認することができます。特定のロールのメンバーシップと、それに応じてアクセスを制限します。の使用例:

Visual Basic .net のコード
If User.IsInRole("BUILTIN\Administrators") Then
   Response.Write("You are an Admin")
Else If User.IsInRole("BUILTIN\Users") then
   Response.Write("You are a User")
Else
   Response.Write("Invalid user")
End if
				
Visual C# .net コード
if ( User.IsInRole("BUILTIN\\Administrators"))
   Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
   Response.Write("You are a User");
else
   Response.Write("Invalid user");
				
フォーム認証を使用している場合は、ロールに割り当てられていない、認証済みユーザーです。これはプログラムで行う必要があります。ロールに割り当てるにはユーザーを認証する場合 (これは、フォーム認証モジュールのを使用します。認証モジュールを次の例で) 新しいGenericPrincipalオブジェクトを作成し、それを HttpContext のユーザープロパティに割り当てます。次のコードを示しています。この。

Visual Basic .net のコード
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)
   If (Not(HttpContext.Current.User Is Nothing)) Then
      If HttpContext.Current.User.Identity.AuthenticationType = "Forms" Then
         Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
         Dim myRoles(3) As String
         myRoles(0)= "managers"
         myRoles(1)= "testers"
         myRoles(2)= "developers"
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles) 
      End If
   End If
End Sub
				
Visual C# .net コード
public void Application_AuthenticateRequest(Object s, EventArgs e)      
{
   if (HttpContext.Current.User != null)
   {
      if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" ) 
      {
         System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
         String[] myRoles = new String[3];
         myRoles[0]= "managers";
         myRoles[1]= "testers";
         myRoles[2]= "developers";
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
      }
   }
} 
				
ユーザーは特定の役割であるを確認し、アクセスを制限するにはしたがって、次のコードを使用して (または類似の) 独自の .aspx ページで。

Visual Basic .net のコード
If User.IsInRole("managers") Then
   Response.Write("You are a Manager")
Else If  User.IsInRole("testers") Then
   Response.Write("You are a Tester")
Else If User.IsInRole("developers") Then
   Response.Write("You are a Developer")
End if
				
Visual C# .net コード
if (User.IsInRole("managers"))
   Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
   Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
   Response.Write("You are a Developer");
				
詳細については、記事をクリックします。「サポート技術情報」資料を参照するには、次の番号:
306238 HOW TO ロールベースのを実装 Visual Basic .net を使用して、ASP.NET のアプリケーションでフォーム ベースの認証によるセキュリティ
ロール ベースのセキュリティの詳細についてを参照してください。.NET Framework SDK ドキュメントの次のトピックを。
ロール ベースのセキュリティ
.aspx の http://msdn.microsoft.com/en-us/library/52kd59t0 (vs.71)

関連情報

ASP.NET セキュリティのガイドラインについてを参照してください、以下の MSDN ホワイト ペーパー:
ASP.NET の認証: .net セキュリティ ガイド
http://msdn.microsoft.com/en-us/library/ms978378.aspx
ASP.NET の詳細についてを参照してください、以下の MSDN ニュースグループ:
microsoft.public.dotnet.framework.aspnet
詳細については、記事をクリックします。「サポート技術情報」資料を表示するには以下の数値。
311094 BUG:"ConfigurationException"エラー メッセージの権限を借用するとき読み取り構成アカウント
306359 PRB: Request.ServerVariables("LOGON_USER") 返します。 空文字列に ASP.NET
313091 方法: Visual Basic .net を使用して、フォーム認証で使用するためのキーを作成する.
313116 PRB: フォーム認証の要求が loginUrl] ページに表示されません。
詳細については、次の書籍を参照してください。
Reilly、ダグラス J. Microsoft ASP.NET のアプリケーションを設計します。.マイクロソフト プレス、2001年。

Esposito は恐竜。ASP.NET と ADO.NET の Web ソリューションを構築.マイクロソフト プレス、2001年。

プロパティ

文書番号: 306590 - 最終更新日: 2012年6月28日 - リビジョン: 1.0
キーワード:?
kbinfo kbweb kbsecurity kbconfig kbarttyperoadmap kbproductlink kbmt KB306590 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:306590
Microsoft Knowledge Base の免責: 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