次の方法で共有


ASP.NET セキュリティのアーキテクチャ

更新 : 2007 年 11 月

ここでは、ASP.NET セキュリティのインフラストラクチャの概要を説明します。ASP.NET のセキュリティ システム内の関連図を次に示します。

ASP.NET のアーキテクチャ
yedba920.urtarch(ja-jp,VS.90).gif

図に示したとおり、すべての Web クライアントは IIS (Microsoft Internet Information Services) 経由で ASP.NET アプリケーションと通信します。IIS は必要に応じて要求を認証してから、ASP.NET アプリケーションなどの要求されたリソースを検出します。クライアントが承認されると、リソースが使用可能になります。

実行中の ASP.NET アプリケーションは、組み込みの ASP.NET セキュリティ機能を使用できます。また、ASP.NET アプリケーションは .NET Framework のセキュリティ機能も使用できます。詳細については、「セキュリティの基本概念」を参照してください。

ASP.NET 認証と IIS の統合

IIS の認証機能だけでなく、ASP.NET での認証も実行できます。ASP.NET 認証を使用する場合は、IIS 認証サービスとの対話について理解していることが必要です。

IIS では、一連の資格情報が Microsoft Windows NT アカウントに割り当てられていることが前提とされており、それらの資格情報を使用してユーザーの認証が行われます。IIS 5.0 と IIS 6.0 で利用できる認証には、基本認証、ダイジェスト認証、および Windows 統合セキュリティ (NTLM または Kerberos) の 3 種類があります。この 3 種類の中から、IIS 管理サービスで使用する認証を選択できます。IIS 認証の詳細については、IIS のドキュメントを参照してください。

ASP.NET アプリケーションに割り当てられた URL をユーザーが要求すると、要求と認証情報がそのアプリケーションに渡されます。ASP.NET にはフォーム認証の機能があります。フォーム認証は、未認証の要求を、作成した ASP.NET Web ページにリダイレクトするシステムです。ユーザーが資格情報を入力し、ページを送信します。アプリケーションが要求を認証すると、このシステムは、資格情報または ID を再取得するためのキーを含む認証チケットを Cookie 内に発行します。後続の要求には、その要求と共に認証チケットが含まれます。

yedba920.alert_note(ja-jp,VS.90).gifメモ :

ASP.NET メンバシップと ASP.NET ログイン コントロールは、暗黙にフォーム認証を使用して動作します。

ASP.NET 構成ファイルのセキュリティの設定

ASP.NET セキュリティの設定は、Machine.config ファイルと Web.config ファイルで構成されます。他の構成情報と同様に、基本の設定と既定の設定は、現在インストールされている .NET Framework の Config サブディレクトリの Machine.config ファイル内で行われます。Web サイトのルート ディレクトリおよびアプリケーションのルート ディレクトリの Web.config ファイル内で、サイト固有の設定およびアプリケーション固有の設定を行うことができます。これには、Machine.config ファイルの設定のオーバーライドも含まれます。サブディレクトリは、そのディレクトリ内にある Web.config ファイルによってオーバーライドされない限り、親ディレクトリの設定を継承します。構成の階層構造が果たすセキュリティ関連の機能の例については、「configSections 要素 (全般設定スキーマ)」を参照してください。

Web.config ファイルへの主なサブセクションには、authenticationauthorization、および identity の 3 つがあります。各セキュリティ要素の値は、通常は Machine.config ファイルに設定されており、要求に応じてアプリケーション レベルの Web.config ファイルでオーバーライドされます。すべてのサブディレクトリは、これらの設定を自動的に継承します。ただし、サブディレクトリには、継承された設定をオーバーライドする独自の構成ファイルを配置できます。

yedba920.alert_note(ja-jp,VS.90).gifメモ :

ASP.NET 構成は、IIS で処理されるように Aspnet_isapi.dll 拡張子で登録されている、ASP.NET リソースにのみ適用されます。ASP.NET 構成は ASP.NET で処理されないリソースを承認できません。そのため、すべてのユーザーが、IIS アクセス許可に従って、.txt、.htm、.html、.gif、.jpg、.jpeg、.asp、およびその他の種類のファイルにアクセスできます。たとえば、あるディレクトリ内の ASP.NET リソースに Web.config ファイルの制限を適用しても、ディレクトリの参照が有効に設定され、その他の制限が設定されていない場合には、そのディレクトリ内にある上記の種類のファイルはすべてのユーザーが参照できます。このような種類のファイルは、IIS 管理ツールを使用してファイル名の拡張子を Aspnet_isapi.dll 拡張子に明示的に割り当てることにより、ASP.NET セキュリティの配下に置くことができます。ただし、これらの種類のファイルを ASP.NET を使用して処理すると、Web サイトのパフォーマンスに影響を及ぼします。

___location 構成要素を使用して、設定を適用する対象として特定のファイルまたはディレクトリを指定できます。詳細については、「configSections 要素 (全般設定スキーマ)」および「特定のファイルとサブディレクトリの構成」を参照してください。ASP.NET の構成全般に関する詳細については、「ASP.NET 構成の概要」を参照してください。

構成ファイルのセキュリティ セクションの構文を次の例に示します。

<authentication mode="[Windows|Forms| None]">
  <forms name="name" 
    loginUrl="url" 
    protection="[All|None|Encryption|Validation]"
    path="path" timeout="minutes"
    requireSSL="[true|false]" 
    slidingExpiration="[true|false]">
    <credentials passwordFormat="[Clear|MD5|SHA1]">
      <user name="********" 
        password="********"/>
      </credentials>
  </forms>
</authentication>

<authorization>
  <allow users="comma-separated list of users"
      roles="comma-separated list of roles" />
  <deny  users="comma-separated list of users"
      roles="comma-separated list of roles" />
</authorization>

<identity impersonate ="[true|false]"
  userName="___domain\username"
  password="password" />

<trust level="[Full|High|Medium|Low|Minimal]" 
  originUrl=""/>

<securityPolicy>
  <trustLevel name="Full" policyFile="internal"/>
  <trustLevel name="High" policyFile="web_hightrust.config"/>
  <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
  <trustLevel name="Low"  policyFile="web_lowtrust.config"/>
  <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>

これらの要素の既定の設定を次の表に示します。

既定値

説明

<allow roles="" />

既定ですべてのロールが許可されていることを示す空の文字列。

<allow users="*" />

すべてのユーザーがアクセスを許可されている (認証が不要である) ことを示す空の文字列。

<authentication mode="Windows" />

現在の User 値のソースを判断する認証の種類。既定は Windows です。

<credentials passwordFormat="SHA1" />

パスワードに対して使用するハッシュ アルゴリズム。既定値は SHA1 です。

<deny roles="" />

既定でどのロールも拒否されないことを示す空の文字列。

<deny users="" />

既定でどのユーザーも拒否されないことを示す空の文字列。

<forms loginUrl="logon.aspx" />

認証 mode を Forms に設定した場合に、有効な認証チケットを持たない要求が送信される URL。

<forms name=".ASPXAUTH" />

ユーザーのコンピュータ上で、フォーム認証 Cookie が格納される場所の名前。

<forms path="/" />

フォーム認証が適用されるパス。既定値は、アプリケーション ルート以下のすべてのパスです。

<forms protection="All" />

フォーム認証チケットに適用されるセキュリティ。使用できる値は、All、None、Encryption、および Validation です。

<forms timeout="30" />

フォーム認証チケットの有効期限が切れるまでのタイムアウト (分単位)。この間にユーザーを再認証する必要があります。

<forms requireSSL="false" />

認証 Cookie を送信するために SSL 接続が必要かどうかを示すブール値。

<forms slidingExpiration="true" />

スライド式有効期限が有効かどうかを示すブール値。詳細については、SlidingExpiration プロパティを参照してください。

<identity impersonate="false" />

偽装が無効かどうかを示すブール値。詳細については、「ASP.NET の偽装」を参照してください。

<identity userName="" />

既定でユーザー ID が指定されないことを示す空の文字列。

<identity password="" />

既定でユーザー ID のパスワードが指定されないことを示す空の文字列。

<trust level="Full" originUrl="" />

アプリケーションに適用されるセキュリティ ポリシー。

<trustLevel name="Full" policyFile="internal"/>

信頼レベルが Full のときの既定のポリシー ファイル。

<trustLevel name="High" policyFile="web_hightrust.config"/>

信頼レベルが High のときの既定のポリシー ファイル。

<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>

信頼レベルが Medium のときの既定のポリシー ファイル。

<trustLevel name="Low" policyFile="web_lowtrust.config"/>

信頼レベルが Low のときの既定のポリシー ファイル。

<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>

信頼レベルが Minimal のときの既定のポリシー ファイル。

参照

概念

ASP.NET 構成の概要

その他の技術情報

ASP.NET Web サイトのセキュリティ

セキュリティの基本概念

フォーム認証プロバイダ