現在オフラインです。再接続するためにインターネットの接続を待っています

Visual C# .NET を使用して、ASP.NET アプリケーションでフォーム ベースの認証にロール ベースのセキュリティを実装する方法

この記事は、以前は次の ID で公開されていました: JP311495
Microsoft Visual Basic .NET については、次の資料を参照してください。306238

この資料では、次の Microsoft .NET Framework クラス ライブラリの名前空間を参照しています。
  • System.Web.Security
  • System.Security.Principal

この資料の内容

概要
この資料では、Visual C# .NET を使用して、フォーム ベースの認証を実装した ASP.NET アプリケーションに、ロール ベースのセキュリティを実装する方法について説明します。


必要条件

この資料では、ASP.NET アプリケーション上に既にフォーム ベースの認証が実装されていることを前提としています。
301240 [HOWTO] C# .NET を使用して ASP.NET アプリケーションでフォーム ベースの認証を実装する方法

認証するユーザーにロールを割り当てる

フォーム ユーザーは通常の場合 Microsoft Windows ユーザーではないため、デフォルトではロールが割り当てられていません。このため、認証するユーザーのロールをそのユーザーの ID に添付し、コード内にロール ベースのセキュリティを実装できるようにする必要があります。

後述のサンプル コードを使用して、アプリケーションにロール ベースのセキュリティを実装します。このサンプル コードでは、認証するユーザーに、あらかじめ設定されたロールを割り当てます。その認証されたユーザーに対してロールを取得し、認証するユーザーの ID にこれらのロールを添付する処理については、以下のサンプル コードに示すように、ユーザー データの格納方法に応じて独自のメソッドを実装することができます。

既存のアプリケーションの Global.asax ファイルに以下のコードをコピーし、Application_AuthenticateRequest イベント ハンドラで、認証するユーザーにロールを割り当てます。
public void Application_AuthenticateRequest( Object src , EventArgs e ){   if (!(HttpContext.Current.User == null))   {      if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )      {      System.Web.Security.FormsIdentity id;      id = (System.Web.Security.FormsIdentity)HttpContext.Current.User.Identity;      String[] myRoles = new String[2];      myRoles[0] = "Manager";      myRoles[1] = "Admin";      HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);      }   }}				

ユーザー ロールをチェックして ASPX ページにプログラム ロジックを実装する

以下の手順は、認証するユーザーが属しているロールに基づいて、プログラム ロジックの実装と制御を行う方法を示しています。
  1. Sample.aspx という名前の新しい .aspx ページを作成し、以下のコードを貼り付けます。
    <%@ Page Language="C#" %><%@ Import Namespace="System.Web" %>  <script runat=server>    public void Page_Load() {	if (User.IsInRole("Admin")){		Response.Write ("You are an Administrator");}	else {		Response.Write ("You do not have any role assigned");}    }  </script>					
  2. Sample.aspx を既存のアプリケーションに保存します。ページを参照してテストします。
関連情報
ASP.NET セキュリティ機能の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
306590 [INFO] ASP.NET のセキュリティについて
ロール ベースのセキュリティの詳細については、以下の .NET Framework Software Development Kit (SDK) ドキュメントを参照してください。ロール ベースのセキュリティに関する情報は、以下の IBuySpy Developer Solutions Web サイトのドキュメントおよびソース コードにも含まれています。
IBuySpy Developer Solutions
http://www.ibuyspy.com
他社テクニカル サポートのお問い合わせ窓口は、ユーザーの便宜のために提供されているものであり、将来予告なしに変更されることがあります。マイクロソフトは、掲載している情報に対して、いかなる責任も負わないものとします。

関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 311495 (最終更新日 2004-06-29) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
プロパティ

文書番号:311495 - 最終更新日: 07/11/2005 05:09:59 - リビジョン: 3.7

Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft ASP.NET 1.1, Microsoft Visual C# .NET 2003 Standard Edition

  • kbhowtomaster kbsecurity KB311495
フィードバック
="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">