メンバシップの概要
更新 : 2007 年 11 月
ASP.NET メンバシップを使用すると、ユーザーの資格情報を検証して格納する機能を組み込むことができます。そのため、ASP.NET メンバシップは、Web サイトでのユーザー認証の管理に役立ちます。ASP.NET フォーム認証または ASP.NET ログイン コントロールを ASP.NET メンバシップとを併用することで、ユーザーを認証するための完全なシステムを作成できます。
ASP.NET メンバシップは次の機能をサポートします。
新しいユーザーとパスワードを作成する。
メンバシップ情報 (ユーザー名、パスワード、および関連データ) を Microsoft SQL Server、Active Directory、または代替データ ストアに格納する。
サイトを表示するユーザーを認証する。ユーザーはプログラムで認証できます。または、ASP.NET ログイン コントロールを使用することで、コードをほとんど (または、まったく) 記述せずに完全な認証システムを作成できます。
パスワードの作成、変更、リセットなどのパスワード管理を行う。メンバシップ オプションの選択内容によっては、ユーザーが指定した質問と回答による自動的なパスワード リセット システムを、メンバシップ システムを使用して実現することもできます。
認証されたユーザーに対して、独自のアプリケーションで使用でき、ASP.NET のパーソナル化システムおよびロール管理 (承認) システムとも統合できる一意の ID を公開する。
カスタム メンバシップ プロバイダを指定して、独自のコードによってメンバシップを管理したり、カスタム データ ストア内でメンバシップ データを保守したりできるようにする。
メンバシップ、ロール、およびユーザー プロファイル
メンバシップは、ASP.NET 内の認証用の独立した機能ですが、ASP.NET ロール管理と統合してサイトの承認サービスとすることもできます。また、メンバシップをユーザー プロファイルと統合して、個々のユーザーに適合するようにアプリケーションごとにカスタマイズすることもできます。詳細については、「ロールを使用した承認の管理」および「ASP.NET プロファイル プロパティの概要」を参照してください。
メンバシップのしくみ
メンバシップを使用するには、まずメンバシップをサイトに合わせて構成する必要があります。基本的な手順は次のとおりです。
メンバシップ オプションを Web サイト構成の一部として指定します。既定ではメンバシップは有効になっています。また、使用するメンバシップ プロバイダを指定することもできます (具体的には、メンバシップ情報を保持するデータベースの種類を指定することになります)。既定のプロバイダでは Microsoft SQL Server データベースが使用されます。また、Active Directory を使用してメンバシップ情報を格納することを選択したり、カスタム プロバイダを指定したりすることもできます。ASP.NET アプリケーションの Web.config ファイルに指定できるメンバシップ構成オプションの詳細については、「ASP.NET アプリケーションの設定によるメンバシップの使用」を参照してください。
Windows 認証または Passport 認証ではなく、フォーム認証を使用するようにアプリケーションを構成します。通常、アプリケーション内の一部のページまたはフォルダを保護し、認証されているユーザーだけがアクセスできるように指定します。
メンバシップのユーザー アカウントを定義します。ユーザー アカウントを定義するにはさまざまな方法があります。Web サイト管理ツールでは、ウィザードに似たインターフェイスを使用して新規ユーザーを作成できます。または、ASP.NET の "新規ユーザー" Web ページを作成し、ユーザー名とパスワード (およびオプションで電子メール アドレス) を入力させてから、CreateUser というメンバシップ関数を使用して、メンバシップ システム内に新しいユーザーを作成することもできます。
これで、アプリケーション内でメンバシップを使用してユーザーを認証できるようになります。ほとんどの場合はログイン フォームを用意します。これは独立したページである場合も、ホーム ページ上の特別な領域である場合もあります。ASP.NET TextBox コントロールを使用すると手動でログイン フォームを作成できます。また、ASP.NET ログイン コントロールも使用できます。フォーム認証を使用するようにアプリケーションを構成したので、認証されていないユーザーが保護されたページを要求した場合、ASP.NET によってログイン ページが自動的に表示されます。
メモ : |
---|
ASP.NET ログイン コントロール (Login、LoginView、LoginStatus、LoginName、および PasswordRecovery) には、ユーザーに資格情報を求めてメンバシップ システム内で資格情報を検証するために必要な実質的にすべてのロジックがカプセル化されています。 |
ログイン コントロールを使用する場合は、自動的にメンバシップ システムを使用してユーザーの検証が実行されます。ログイン フォームを手作業で作成する場合は、ユーザーにユーザー名とパスワードを要求した後、ValidateUser メソッドを呼び出して検証を実行できます。ユーザーが検証された後は、フォーム認証を使用して、そのユーザーに関する情報を保存できます (たとえば、ユーザーのブラウザが Cookie を受け入れる場合は、暗号化された Cookie を使用できます)。ログイン コントロールでは、このタスクは自動的に実行されます。ログイン フォームを手作業で作成する場合は、FormsAuthentication クラスのメソッドを呼び出して、Cookie を作成し、これをユーザーのコンピュータに書き込むことができます。ユーザーが自分のパスワードを忘れた場合は、パスワードを思い出すのを手助けしたり新しいパスワードを作成したりできるメンバシップ関数をログイン ページから呼び出すことができます。
ユーザーが別の保護されたページを要求するたびに、ASP.NET フォーム認証はユーザーが認証されているかどうかを確認し、ユーザーにページの表示を許可するか、またはユーザーをログイン ページにリダイレクトします。既定では、ユーザーのセッションが継続する間は認証 Cookie が有効なままです。
ユーザーが認証された後は、メンバシップ システムにより、現在のユーザーの情報を格納したオブジェクトが使用できるようになります。たとえば、メンバシップ ユーザーのオブジェクトのプロパティを取得すると、ユーザーの名前や電子メール アドレス、ユーザーが最後にアプリケーションにログインした日時などを確認できます。
メンバシップ システムには、ユーザー情報の取得や設定のために下位のデータベース機能を明示的に実行する必要が一切ないという重要な側面があります。たとえば、メンバシップ CreateUser メソッドを呼び出すことで新しいユーザーを作成するとします。メンバシップ システムは、ユーザー情報を格納するために必要なデータベース レコードを作成するという細かな作業を処理します。ユーザーの資格情報をチェックするために ValidateUser メソッドを呼び出すと、すべてのデータベース検索はメンバシップ システムによって自動的に実行されます。
メンバシップの構成と管理
メンバシップ システムはアプリケーションの Web.config ファイルで構成します。最も簡単にメンバシップを構成して管理するには、ウィザード ベースのインターフェイスを備えた Web サイト管理ツールを使用します。メンバシップを構成する際には、次の情報を指定します。
使用するメンバシップ プロバイダ (通常、メンバシップ情報を格納するデータベースも指定します)。
パスワード オプション (暗号化や、ユーザー固有の質問に基づくパスワードの復元をサポートするかどうかなど)。
ユーザーとパスワード。Web サイト管理ツールを使用する場合は、ユーザーを直接作成し、管理できます。このツールを使用しない場合は、メンバシップ関数を呼び出し、プログラムによってユーザーを作成および管理する必要があります。