ヘッダーをスキップ
Oracle® Providers for ASP.NET 開発者ガイド
11gリリース2 (11.2.0.3)for Microsoft Windows
B62266-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleMembershipProviderクラス

OracleMembershipProviderクラスにより、ASP.NET開発者は、Webサイト・ユーザーのアカウント情報をOracleデータベースに格納できます。

クラスの継承

System.Object

  System.Configuration.Provider.ProviderBase

    System.Web.Security.MembershipProvider

      Oracle.Web.Security.OracleMembershipProvider

宣言

// C#
public class OracleMembershipProvider: MembershipProvider

スレッド安全性

すべてのパブリック静的メソッドはスレッドセーフですが、インスタンス・メンバーがスレッドセーフであることは保証されません。

備考

このクラスにより、ASP.NETアプリケーションは、Oracleデータベースにユーザー情報を格納し、管理できます。この章のユーザーという用語は、データベース・ユーザーではなくアプリケーションまたはユーザーを意味していることに注意してください。したがって、このプロバイダが管理するユーザー情報は、データベース・ユーザー情報ではなくアプリケーション情報またはユーザー情報です。

次のコード例は、OracleMembershipProviderをデフォルト・プロバイダとして使用するように構成されたASP.NETアプリケーションのweb.configファイルを示します。この構成では、machine.configファイルで指定された接続文字列とデフォルト属性値を使用します。

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <membership defaultProvider="OracleMembershipProvider"/>
  </system.web>
</configuration>

次に、OracleMembershipProviderをカスタマイズされた設定およびアプリケーション固有の接続文字列とともに使用するASP.NETアプリケーションに対するweb.configの例を示します。

<?xml version="1.0"?>
<configuration xmlns=
  "http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <connectionStrings>
    <add name="my_membership_app_con_string" connectionString=
      "User Id=scott;Password=tiger;Data Source=Oracle"/>
  </connectionStrings>
  <system.web>
    <!-- Enable and customize OracleMembershipProvider settings -->
    <membership defaultProvider="MyOracleMembershipProvider">
      <providers>
        <add name="MyOracleMembershipProvider"
             type="Oracle.Web.Security.OracleMembershipProvider, 
             Oracle.Web, Version=2.112.2.0, Culture=neutral, 
             PublicKeyToken=89b483f429c47342"
             connectionStringName="my_membership_app_con_string"
             applicationName="my_membership_app"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="true"
             requiresUniqueEmail="true"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="4"
             minRequiredPasswordLength="9"
             passwordAttemptWindow="8"/>
      </providers>
    </membership>
  </system.web>
</configuration>

applicationName属性は、ASP.NETアプリケーションごとに一意の値に設定する必要があります。

要件

ネームスペース: Oracle.Web.Security

アセンブリ: Oracle.Web.dll

Oracle Providers for ASP.NETのバージョン: Oracle Providers for ASP.NET 2.0およびOracle Providers for ASP.NET 4


OracleMembershipProviderメンバー

次の表にOracleMembershipProviderメンバーをリストします。

OracleMembershipProviderコンストラクタ

OracleMembershipProviderコンストラクタを、表2-1にリストします。

表2-1 OracleMembershipProviderコンストラクタ

コンストラクタ 説明

OracleMembershipProviderコンストラクタ


OracleMembershipProviderクラスの新規インスタンスをインスタンス化します


OracleMembershipProvider静的メソッド

OracleMembershipProvider静的メソッドを、表2-2にリストします。

表2-2 OracleMembershipProvider静的メソッド

静的メソッド 説明

Equals

System.Objectからの継承(オーバーロード)

ReferenceEquals

System.Objectからの継承


OracleMembershipProviderパブリック・プロパティ

OracleMembershipProviderパブリック・プロパティを、表2-3にリストします。

表2-3 OracleMembershipProviderパブリック・プロパティ

パブリック・プロパティ 説明

ApplicationName


ユーザー情報のグループ化に使用されるアプリケーションの名前を取得または設定します

CommandTimeout


コマンドが例外で実行を終了するまでに実行可能な秒数を取得します

Description

System.Configuration.Provider.Providerbaseからの継承

EnablePasswordReset


パスワードのリセットをユーザーに許可するようにメンバーシップ・プロバイダが構成されているかどうかを示します

EnablePasswordRetrieval


パスワードの取得をユーザーに許可するようにメンバーシップ・プロバイダが構成されているかどうかを示します

MaxInvalidPasswordAttempts


ユーザーがロックされるまでに許可される無効なパスワードまたはパスワードに対する無効な回答の試行回数を取得します

MinRequiredNonAlphanumericCharacters


有効なパスワードに存在する必要のある特殊文字の最小数を取得します

MinRequiredPasswordLength


パスワードに必要な最小の長さを取得します

Name

System.Configuration.Provider.Providerbaseからの継承

PasswordAttemptWindow


ユーザーがロックされるまでに無効なパスワードまたはパスワードに対する無効な回答の最大試行回数が許可される時間(分)を取得します

PasswordCompatMode


パスワードの互換性モードを取得します。

PasswordFormat


メンバーシップ・データ・ソースにパスワードを格納するための形式を示す値を取得します

PasswordStrengthRegularExpression


パスワードの評価に使用される正規表現を取得します

RequiresQuestionAndAnswer


ユーザーがパスワードをリセットおよび取得する場合にパスワードに対する質問に回答することを要求するような方法でメンバーシップ・プロバイダが構成されているかどうかを示す値を取得します

RequiresUniqueEmail


各ユーザー名の一意の電子メール・アドレスを要求するようにメンバーシップ・プロバイダが構成されているかどうかを示す値を取得します


OracleMembershipProviderパブリック・メソッド

OracleMembershipProviderパブリック・メソッドを、表2-4にリストします。

表2-4 OracleMembershipProviderパブリック・メソッド

パブリック・メソッド 説明

ChangePassword


ユーザーのパスワードを更新します

ChangePasswordQuestionAndAnswer


ユーザーのパスワードに対する質問および回答を更新します

CreateUser


データベースに新しいユーザーを追加します

DeleteUser


データベースからユーザーを削除します

Equals

System.Objectからの継承(オーバーロード)

FindUsersByEmail


指定された電子メール・アドレスに一致する電子メール・アドレスを持つユーザーのコレクションを戻します

FindUsersByName


指定されたユーザー名に一致するユーザーのコレクションを戻します

GeneratePassword


少なくとも14文字の長さのランダム・パスワードを生成します

GetAllUsers


データベース内のすべてのユーザーのコレクションを戻します

GetHashCode

System.Objectからの継承

GetNumberOfUsersOnline


アプリケーションに現在アクセスしているユーザー数を戻します

GetPassword


指定されたユーザー名のパスワードをデータベースから戻します

GetType

System.Objectからの継承

GetUser


ユーザーの一意識別子に基づいてデータベースからユーザー情報を戻します(オーバーロード)

GetUserNameByEmail


指定された電子メール・アドレスに関連付けられているユーザー名を戻します

Initialize


ASP.NETアプリケーション構成ファイル(web.config)で指定されたプロパティ値でOracleMembershipプロバイダを初期化します

ResetPassword


ユーザーのパスワードをリセットし、自動的に生成された新しいパスワードを戻します

ToString

System.Objectからの継承

UnlockUser


ユーザーをロック解除してユーザーを検証できるようにします

UpdateUser


データベース内のユーザーに関する情報を更新します

ValidateUser


ユーザーを検証します


OracleMembershipProviderパブリック・イベント

OracleMembershipProviderパブリック・イベントを、表2-5にリストします。

表2-5 OracleMembershipProviderパブリック・イベント

パブリック・イベント 説明

ValidatingPassword

System.Web.Security.MembershipProviderからの継承



OracleMembershipProviderコンストラクタ

このコンストラクタでは、OracleMembershipProviderクラスの新規インスタンスがインスタンス化されます。

オーバーロード・リスト:

OracleMembershipProvider()

このコンストラクタでは、OracleMembershipProviderクラスの新規インスタンスがインスタンス化されます。

宣言

// C#
public OracleMembershipProvider();

備考

ASP.NETは、OracleMembershipProviderコンストラクタを呼び出して、アプリケーションの構成で指定されたとおりにOracleMembershipProviderクラスのインスタンスを作成します。OracleMembershipProviderオブジェクトの初期化値は、Initializeメソッドを通じて渡されます。

このコンストラクタは、アプリケーションで直接使用されることを意図していません。


OracleMembershipProvider静的メソッド

OracleMembershipProvider静的メソッドを、表2-6にリストします。

表2-6 OracleMembershipProvider静的メソッド

静的メソッド 説明

Equals

System.Objectからの継承(オーバーロード)

ReferenceEquals

System.Objectからの継承



OracleMembershipProviderパブリック・プロパティ

OracleMembershipProviderパブリック・プロパティを、表2-7にリストします。

表2-7 OracleMembershipProviderパブリック・プロパティ

パブリック・プロパティ 説明

ApplicationName


ユーザー情報のグループ化に使用されるアプリケーションの名前を取得または設定します

CommandTimeout


コマンドが例外で実行を終了するまでに実行可能な秒数を取得します

Description

System.Configuration.Provider.Providerbaseからの継承

EnablePasswordReset


パスワードのリセットをユーザーに許可するようにメンバーシップ・プロバイダが構成されているかどうかを示します

EnablePasswordRetrieval


パスワードの取得をユーザーに許可するようにメンバーシップ・プロバイダが構成されているかどうかを示します

MaxInvalidPasswordAttempts


ユーザーがロックされるまでに許可される無効なパスワードまたはパスワードに対する無効な回答の試行回数を取得します

MinRequiredNonAlphanumericCharacters


有効なパスワードに存在する必要のある特殊文字の最小数を取得します

MinRequiredPasswordLength


パスワードに必要な最小の長さを取得します

Name

System.Configuration.Provider.Providerbaseからの継承

PasswordAttemptWindow


ユーザーがロックされるまでに無効なパスワードまたはパスワードに対する無効な回答の最大試行回数が許可される時間(分)を取得します

PasswordCompatMode


パスワードの互換性モードを取得します。

PasswordFormat


メンバーシップ・データ・ソースにパスワードを格納するための形式を示す値を取得します

PasswordStrengthRegularExpression


パスワードの評価に使用される正規表現を取得します

RequiresQuestionAndAnswer


ユーザーがパスワードをリセットおよび取得する場合にパスワードに対する質問に回答することを要求するような方法でメンバーシップ・プロバイダが構成されているかどうかを示す値を取得します

RequiresUniqueEmail


各ユーザー名の一意の電子メール・アドレスを要求するようにメンバーシップ・プロバイダが構成されているかどうかを示す値を取得します


ApplicationName

このプロパティでは、ユーザー情報のグループ化に使用されるアプリケーションの名前を取得または設定します。

宣言

// C#
public override string ApplicationName{get; set;}

プロパティ値

アプリケーションの名前。applicationName属性がアプリケーション構成ファイルで指定されていない場合、または値が空の文字列の場合は、このプロパティがアプリケーションの仮想パスに設定されます。

例外

ArgumentException - 指定されたアプリケーション名が空の文字列またはnull参照です。

ProviderException - 指定されたアプリケーション名が256文字を超えています。

備考

ApplicationNameプロパティの文字列値は、ユーザー情報の編成に使用されます。ユーザー情報はアプリケーション名ごとに一意に格納されるため、複数のASP.NETアプリケーションが、同じデータベースを使用したり、重複するユーザー名を作成したりできます。このプロパティは、プログラムで設定するか、Webアプリケーション構成ファイルでapplicationName属性を使用して宣言で設定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

ApplicationNameプロパティはスレッドセーフではありません。プログラミング・コードでは、ユーザーにWebアプリケーションでのApplicationNameプロパティの設定を許可しないことをお薦めします。

CommandTimeout

このプロパティは、コマンドが例外で実行を終了するまでに実行可能な秒数を取得します。

宣言

// C#
public int CommandTimeout {get;}
 

プロパティ値

int

備考

プロバイダをカスタマイズするために、ASP.NET開発者は、commandTimeout属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。

デフォルト値は30秒です。構成ファイルの属性名は、大文字と小文字が区別されます。

EnablePasswordReset

このプロパティは、パスワードのリセットをユーザーに許可するようにメンバーシップ・プロバイダが構成されているかどうかを示します。

宣言

// C#
public override bool EnablePasswordReset{get;}

プロパティ値

メンバーシップ・プロバイダがパスワードのリセットをサポートする場合はtrueを戻し、それ以外の場合はfalseを戻します。デフォルトはtrueです。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、enablePasswordReset属性を使用してweb.configファイルでこのプロパティにブール値を指定できます。値は、ユーザーがResetPasswordメソッドを使用して、現在のパスワードをランダムに生成された新しいパスワードで上書きできるかどうかを示します。構成ファイルの属性名は、大文字と小文字が区別されます。

EnablePasswordRetrieval

このプロパティは、パスワードの取得をユーザーに許可するようにメンバーシップ・プロバイダが構成されているかどうかを示します。

宣言

// C#
public override bool EnablePasswordRetrieval{get;}

プロパティ値

メンバーシップ・プロバイダがパスワードの取得をサポートするように構成されている場合はtrueを戻し、それ以外の場合はfalseを戻します。デフォルトはfalseです。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、enablePasswordRetrieval属性を使用してweb.configファイルでこのプロパティにブール値を設定できます。値は、ユーザーがGetPasswordメソッドを使用してデータベースから現在のパスワードを取得できるかどうかを示します。構成ファイルの属性名は、大文字と小文字が区別されます。

カスタム・メンバーシップ・プロバイダがハッシュされたパスワードをサポートする場合、GetPasswordメソッドは、EnablePasswordRetrievalプロパティがtrueで、パスワード形式がHashedに設定されている場合に例外を戻します。つまり、ハッシュされたパスワードは取得できません。

MaxInvalidPasswordAttempts

このプロパティでは、ユーザーがロックされるまでに許可される無効なパスワードまたはパスワードに対する無効な回答の試行回数を取得します。

宣言

// C#
public override int MaxInvalidPasswordAttempts{get;}

プロパティ値

ユーザーがロックされるまでに許可される無効なパスワードまたはパスワードに対する無効な回答の試行回数。デフォルトの試行回数は5です。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、maxInvalidPasswordAttempts属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

MaxInvalidPasswordAttemptsプロパティは、PasswordAttemptWindowプロパティと連動します。PasswordAttemptWindowプロパティ値(分単位)内の無効なパスワードまたはパスワードに対する無効な質問の入力回数がMaxInvalidPasswordAttemptsプロパティ値以上の場合は、UnlockUserメソッドによってロック解除されるまでユーザーがロックされます。MaxInvalidPasswordAttempts値に達する前に、有効なパスワードまたはパスワードに対する有効な回答が入力された場合は、無効な試行回数を追跡するカウンタがゼロにリセットされます。

無効なパスワードおよびパスワードに対する無効な回答の試行は個別に累積されます。たとえば、MaxInvalidPasswordAttemptsプロパティが10に設定されていて、6回の無効なパスワード試行に続いてパスワードに対する無効な回答が3回試行された場合、ユーザーがロックされるには、PasswordAttemptWindow内であと4回の無効なパスワード試行または7回のパスワードに対する無効な回答試行が行われる必要があります。

RequiresQuestionAndAnswerプロパティがfalseに設定されている場合は、パスワードに対する無効な回答の試行が追跡されません。

無効なパスワードの試行およびパスワードに対する無効な回答の試行は、ValidateUserChangePasswordChangePasswordQuestionAndAnswerGetPasswordResetPasswordの各メソッドで追跡されます。

MinRequiredNonAlphanumericCharacters

このプロパティでは、有効なパスワードに存在する必要のある特殊文字の最小数を取得します。

宣言

// C#
public override int MinRequiredNonAlphanumericCharacters(get;}

プロパティ値

有効なパスワードに存在する必要のある特殊文字の最小数。デフォルト値は1です。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、minRequiredNonalphanumericCharacters属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

MinRequiredNonAlphanumericCharactersプロパティは、OracleMembershipProviderオブジェクトの有効なパスワードを作成するために入力する必要のある特殊文字(英数字以外)の最小数を戻します。

MinRequiredPasswordLength

このプロパティでは、パスワードに必要な最小の長さを取得します。

宣言

// C#
public override int MinRequiredPasswordLength{get;}

プロパティ値

パスワードに必要な最小の長さ。デフォルト値は7です。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、minRequiredPasswordLength属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

minRequiredPasswordLengthプロパティは、OracleMembershipProviderオブジェクトの有効なパスワードを作成するために入力する必要のある最小限の文字数を取得します。

PasswordAttemptWindow

このプロパティでは、ユーザーがロックされるまでに無効なパスワードまたはパスワードに対する無効な回答の最大試行回数が許可される時間(分単位)を取得します。

宣言

// C#
public override int PasswordAttemptWindow{get;}

プロパティ値

ユーザーがロックされるまでに無効なパスワードまたはパスワードに対する無効な回答の最大試行回数が許可される時間(分単位)。デフォルト値は10です。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、passwordAttemptWindow属性を使用してweb.configファイルでこのプロパティに整数値を設定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

PasswordAttemptWindowプロパティはMaxInvalidPasswordAttemptsプロパティと連動します。PasswordAttemptWindowプロパティ値(分単位)内の無効なパスワードまたはパスワードに対する無効な質問の入力回数がMaxInvalidPasswordAttemptsプロパティ値以上の場合は、UnlockUserメソッドによってロック解除されるまでユーザーがロックされます。MaxInvalidPasswordAttempts値に達する前に、有効なパスワードまたはパスワードに対する有効な回答が入力された場合は、無効な試行回数を追跡するカウンタがゼロにリセットされます。

無効なパスワードおよびパスワードに対する無効な回答の試行は個別に累積されます。たとえば、MaxInvalidPasswordAttemptsプロパティが10に設定されていて、6回の無効なパスワード試行に続いてパスワードに対する無効な回答が3回試行された場合、ユーザーがロックされるには、PasswordAttemptWindow値内であと4回の無効なパスワードの試行または7回のパスワードに対する無効な回答試行が行われる必要があります。

RequiresQuestionAndAnswerプロパティがfalseに設定されている場合は、パスワードに対する無効な回答の試行が追跡されません。

無効なパスワードの試行およびパスワードに対する無効な回答の試行は、ValidateUserChangePasswordChangePasswordQuestionAndAnswerGetPasswordResetPasswordの各メソッドで追跡されます。

PasswordCompatMode

このプロパティは、パスワードの互換性モードを取得します。

宣言

// C#
public string PasswordCompatMode {get;}

プロパティ値

string

備考

デフォルト値は、Framework20です。他の指定可能な値は、Framework40です。文字列値は、大/小文字が区別されます。

プロバイダをカスタマイズするために、ASP.NET開発者は、passwordCompatMode属性を使用してweb.configファイルでこのプロパティに文字列値を設定できます。

passwordFormat属性がHashedに設定されると、ユーザーの作成と検証のときに、System.Web.Security.Membership.HashAlgorithmTypeプロパティの値は、メンバーシップ・ユーザーのパスワードのハッシュ化に使用されます。

HashAlgorithmTypeプロパティの値は、大/小文字が区別される属性hashAlgorithmTypeを介してweb.configファイルに設定できます。次に例を示します。

<membership defaultProvider="OracleMembershipProvider" hashAlgorithmType="SHA1"/>

hashAlgorithmType属性がweb.configファイルに指定されていないと、SHA1が使用されます。.NET Framework 2.0の場合、hashAlgorithmTypeの他の有効な値はMD5です。

.NET Framework 4では、既存のメンバーシップ・ユーザーが存在しない新しいアプリケーションで、SHAおよびHMACSHAハッシュ・アルゴリズム・タイプの他の有効なバージョンを使用する場合、passwordCompatMode属性はFramework40に設定する必要があり、hashAlgorithmType属性は適切なタイプ(SHA256HMACSHA256HMACSHA384HMACSHA512など)に設定する必要があります。ただし、passwordCompatModeFramework40に設定した場合、SHA1およびMD5は引き続きサポートされます。

次のweb.configの例では、hashAlgorithmTypeHMACSHA25に、passwordCompatModeFramework40に設定されます。

<!-- Enable and customize OracleMembershipProvider settings -->
<membership defaultProvider="MyOracleMembershipProvider" hashAlgorithmType="HMACSHA256">
             <providers>
    <add name="MyOracleMembershipProvider"
    type="Oracle.Web.Security.OracleMembershipProvider, Oracle.Web,
    Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"
    ConnectionStringName="my_membership_app_con_string"
    applicationName="my_membership_app"
    enablePasswordRetrieval="false"
    enablePasswordReset="true"
    requiresQuestionAndAnswer="true"
    requiresUniqueEmail="true"
    passwordFormat="Hashed"
    maxInvalidPasswordAttempts="4"
    minRequiredPasswordLength="9"
                passwordCompatMode="Framework40"
    passwordAttemptWindow="8"/>
          </providers>
</membership>

あるhashAlgorithmTypeを使用してメンバーシップ・ユーザーを作成したら、同じhashAlgorithmTypeを使用してユーザーを検証する必要があります。hashAlgorithmTypeが変更されると、そのユーザーの検証は成功しません。このため、特定のアプリケーションでその存続期間中は、同じhashAlgorithmTypeを使用する必要があります。

PasswordFormat

このプロパティでは、メンバーシップ・データ・ソースにパスワードを格納するための形式を示す値を取得します。

宣言

// C#
public override MembershipPasswordFormat PasswordFormat{get;}

プロパティ値

データ・ソース内のパスワードの格納形式。形式は、ClearHashedEncryptedなど、いずれかのMembershipPasswordFormat値にできます。デフォルト値はHashedです。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、passwordFormat属性を使用してweb.configファイルでこのプロパティにMembershipPasswordFormat列挙値を指定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

PasswordFormatプロパティは、パスワードがClearEncryptedHashedのいずれかの形式で格納されることを示します。形式名は大文字と小文字が区別されます。たとえば、Clearは有効ですが、clearは無効です。

PasswordStrengthRegularExpression

このプロパティでは、パスワードの評価に使用される正規表現を取得します。

宣言

// C#
public override string PasswordStrengthRegularExpression{get;}

プロパティ値

パスワードの評価に使用される正規表現。デフォルトは空の文字列です。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、passwordStrengthRegularExpression属性を使用してweb.configファイルでこのプロパティに文字列値を設定できます。構成ファイルの属性名は、大文字と小文字が区別されます。

PasswordStrengthRegularExpressionプロパティは、パスワードの評価基準として正規表現を取得します。パスワードが基準を満たさない場合は、メンバーシップ・プロバイダによって受け入れられません。

次に例を示します。

passwordStrengthRegularExpression="(?=.{7,})(?=(.*\d){1,})(?=(.*\W){1,})"

前の例のコードは、次の基準に照らしてパスワードを検証します。

passwordStrengthRegularExpressionで定義されている最小限のパスワード長は、minRequiredPasswordLength属性の値以上である必要があります。

passwordStrengthRegularExpression属性で定義されている特殊(英数字以外)文字の最小数は、minRequiredNonalphanumericCharacters属性の値以上である必要があります。

passwordStrengthRegularExpression属性は、ResetPasswordメソッドから自動的に生成されたパスワードでは使用されません。

RequiresQuestionAndAnswer

このプロパティでは、ユーザーがパスワードをリセットおよび取得する場合にパスワードに対する質問に回答することを要求するような方法でメンバーシップ・プロバイダが構成されているかどうかを示す値を取得します。

宣言

// C#
public override bool RequiresQuestionAndAnswer{get;}

プロパティ値

パスワードのリセットおよび取得に対してパスワードに対する回答が必要な場合はtrueを戻し、それ以外の場合はfalseを戻します。デフォルト値はtrueです。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、requiresQuestionAndAnswer属性を使用してweb.configファイルでこのプロパティにブール値を設定できます。値は、ユーザーがGetPasswordメソッドを使用してパスワードを取得またはResetPasswordメソッドを使用してパスワードをリセットするために、パスワードに対する回答を入力する必要があるかどうかを示します。構成ファイルの属性名は、大文字と小文字が区別されます。

RequiresUniqueEmail

このプロパティでは、各ユーザー名の一意の電子メール・アドレスを要求するようにメンバーシップ・プロバイダが構成されているかどうかを示す値を取得します。

宣言

// C#
public override bool RequiresUniqueEmail{get;}

プロパティ値

メンバーシップ・プロバイダが一意の電子メール・アドレスを必要とする場合はtrueを戻し、それ以外の場合はfalseを戻します。デフォルト値はfalseです。

備考

メンバーシップ・プロバイダをカスタマイズするために、ASP.NET開発者は、requiresUniqueEmail属性を使用してweb.configファイルでRequiresUniqueEmailプロパティにブール値を指定できます。構成ファイルの属性名は、大文字と小文字が区別されます。


OracleMembershipProviderパブリック・メソッド

OracleMembershipProviderパブリック・メソッドを、表2-8にリストします。

表2-8 OracleMembershipProviderパブリック・メソッド

パブリック・メソッド 説明

ChangePassword


ユーザーのパスワードを更新します

ChangePasswordQuestionAndAnswer


ユーザーのパスワードに対する質問および回答を更新します

CreateUser


データベースに新しいユーザーを追加します

DeleteUser


データベースからユーザーを削除します

Equals

System.Objectからの継承(オーバーロード)

FindUsersByEmail


指定された電子メール・アドレスに一致する電子メール・アドレスを持つユーザーのコレクションを戻します

FindUsersByName


指定されたユーザー名に一致するユーザーのコレクションを戻します

GeneratePassword


少なくとも14文字の長さのランダム・パスワードを生成します

GetAllUsers


データベース内のすべてのユーザーのコレクションを戻します

GetHashCode

System.Objectからの継承

GetNumberOfUsersOnline


アプリケーションに現在アクセスしているユーザー数を戻します

GetPassword


指定されたユーザー名のパスワードをデータベースから戻します

GetType

System.Objectからの継承

GetUser


ユーザーの一意識別子に基づいてデータベースからユーザー情報を戻します(オーバーロード)

GetUserNameByEmail


指定された電子メール・アドレスに関連付けられているユーザー名を戻します

Initialize


ASP.NETアプリケーション構成ファイル(web.config)で指定されたプロパティ値でOracleMembershipプロバイダを初期化します

ResetPassword


ユーザーのパスワードをリセットし、自動的に生成された新しいパスワードを戻します

ToString

System.Objectからの継承

UnlockUser


ユーザーをロック解除してユーザーを検証できるようにします

UpdateUser


データベース内のユーザーに関する情報を更新します

ValidateUser


ユーザーを検証します


ChangePassword

このメソッドは、ユーザーのパスワードを更新します。

宣言

// C#
public override bool ChangePassword(string userName, string oldPassword, 
  string newPassword);

パラメータ

戻り値

パスワードが正常に更新された場合はtrueを戻し、それ以外の場合はfalseを戻します。

例外

ArgumentNullException - userNameoldPasswordまたはnewPasswordパラメータがnullです。

System.Web.Security.MembershipPasswordException - userNameがメンバーシップ・データベースに見つかりませんでした。

System.Configuration.Provider.ProviderException - データベースに新しいパスワードを設定しているときにエラーが発生しました。

例外 - 処理されない例外が発生しました。

ArgumentException - 次のいずれかの条件が存在します。

備考

ChangePasswordメソッドは、指定されたユーザー名とパスワードが有効で、パスワードが正しく更新された場合にtrueを戻します。それ以外の場合はfalseを戻します。

ChangePasswordQuestionAndAnswer

このメソッドは、ユーザーのパスワードに対する質問と回答を更新します。

宣言

// C#
public override bool ChangePasswordQuestionAndAnswer(string userName, string
   password, string newPasswordQuestion, string newPasswordAnswer);

パラメータ

戻り値

パスワードに対する質問と回答が正常に更新された場合はtrueを戻し、それ以外の場合はfalseを戻します。

例外

ArgumentException - 次のいずれかの条件が存在します。

備考

指定されたユーザー名とパスワードが有効で、パスワードに対する質問と回答が正常に更新された場合、このメソッドはtrueを戻します。それ以外の場合はfalseを戻します。

CreateUser

このメソッドは、データベースに新しいユーザーを追加します。

宣言

// C#
public override MembershipUser CreateUser(string userName, string password,
   string emailAddress, string passwordQuestion, string passwordAnswer, bool
   isApproved, Object providerUserKey, out MembershipCreateStatus status);

パラメータ

戻り値

新規に作成されたユーザーの情報が移入されるMembershipUserオブジェクト。

備考

このメソッドは、新規に作成されたユーザーの情報が移入されたMembershipUserオブジェクトを戻します。statusパラメータは、ユーザーが正常に作成されたかどうかを示すMembershipCreateStatus値を戻します。CreateUserメソッドに失敗した場合、MembershipCreateStatusメンバーは失敗の原因を示します。

MembershipCreateStatus列挙

MembershipCreateStatus列挙値を、表2-9にリストします。

表2-9 MembershipCreateStatus列挙値

メンバー名 説明

DuplicateEmail

アプリケーションの電子メール・アドレスがすでにデータベースに存在します。

DuplicateProviderUserKey

アプリケーションのプロバイダ・ユーザー・キーがすでにデータベースに存在します。

DuplicateUserName

アプリケーションのユーザー名がすでにデータベースに存在します。

InvalidAnswer

パスワードに対する回答が正しい形式ではありません。

InvalidEmail

電子メール・アドレスが正しい形式ではありません。

InvalidPassword

パスワードが正しい形式ではありません。

InvalidProviderUserKey

プロバイダ・ユーザー・キーが無効なタイプまたは形式です。

InvalidQuestion

パスワードに対する質問が正しい形式ではありません。

InvalidUserName

ユーザー名がデータベースに見つかりませんでした。

ProviderError

プロバイダにより、他のMembershipCreateStatus列挙値で説明されていないエラーが戻されました。

Success

ユーザーが正常に作成されました。

UserRejected

プロバイダ定義の理由により、ユーザーが作成されませんでした。


DeleteUser

このメソッドは、データベースからユーザーを削除します。

宣言

// C#
public override bool DeleteUser(string userName, bool deleteAllRelatedData);

パラメータ

戻り値

ユーザーが正常に削除された場合はtrueを戻し、それ以外の場合、またはユーザーがデータベースに存在しない場合はfalseを戻します。

例外

ArgumentException - userNameパラメータが空の文字列であるか、カンマを含むか、256文字を超えています。

ArgumentNullException - userNameパラメータがnull参照です。

備考

先頭および末尾の空白はuserNameパラメータ値から削除されます。deleteAllRelatedDatatrueの場合は、ユーザーがOracleメンバーシップ・データベースに存在しない場合でも、ロール、プロファイルおよびパーソナライズに関するデータなど、データベース内のユーザーに関連するデータもすべて削除されます。

FindUsersByEmail

このメソッドは、指定された電子メール・アドレスに一致する電子メール・アドレスを持つユーザーのコレクションを戻します。

宣言

// C#
public override MembershipUserCollection FindUsersByEmail(string emailToMatch,
   int pageIndex, int pageSize, out int totalRecords);

パラメータ

戻り値

MembershipUserオブジェクトを含むMembershipUserCollectionオブジェクトを戻します。

例外

ArgumentException - 次のいずれかの条件が存在します。

ArgumentNullException - emailToMatchpageIndexpageSizeまたはtotalRecordsパラメータがnullです。

備考

先頭および末尾の空白はemailToMatchパラメータ値から削除されます。FindUsersByEmailメソッドから戻される結果は、pageIndexパラメータとpageSizeパラメータによって制約されます。pageSizeパラメータは、MembershipUserCollectionオブジェクトで戻すMembershipUserオブジェクトの最大数を示します。pageIndexパラメータは、結果のどのページを戻すかを示します。値はゼロベースであるため、ゼロは最初のページを示します。totalRecordsパラメータは、emailToMatch値に一致したユーザーの総数を表す出力パラメータです。

OracleMembershipProviderクラスは、パーセント文字(%)をワイルドカードとして受け入れることにより、拡張検索をサポートします。

FindUsersByName

このメソッドは、指定されたユーザー名に一致するユーザーのコレクションを戻します。

宣言

// C#
public override MembershipUserCollection FindUsersByEmail(string userNameToMatch,
  int pageIndex, int pageSize, out int totalRecords);

パラメータ

戻り値

MembershipUserオブジェクトを含むMembershipUserCollectionオブジェクトを戻します。

例外

ArgumentException - 次のいずれかの条件が存在します。


注意:

ページ下限は(pageIndex * pageSize)であり、ページ上限は(pageIndex *pageSize)+(pageSize - 1)です。

ArgumentNullException - userNameToMatchpageIndexpageSizeまたはtotalRecordsパラメータがnullです。

備考

先頭および末尾の空白はuserNameToMatchパラメータ値から削除されます。

FindUsersByNameメソッドから戻される結果は、pageIndexパラメータとpageSizeパラメータによって制約されます。pageSizeパラメータは、MembershipUserCollectionオブジェクトで戻すMembershipUserオブジェクトの最大数を示します。pageIndexパラメータは、結果のどのページを戻すかを示します。値はゼロベースであるため、ゼロは最初のページを示します。totalRecordsパラメータは、userNameToMatch値に一致したユーザーの総数を表す出力パラメータです。

OracleMembershipProviderクラスは、パーセント文字(%)をワイルドカードとして受け入れることにより、拡張検索をサポートします。

GeneratePassword

このメソッドは、長さが14文字以上のランダム・パスワードを生成します。

宣言

// C#
public virtual string GeneratePassword( );

戻り値

長さが14文字以上のパスワードのランダムな文字列。

備考

OracleMembershipProviderオブジェクトは、GeneratePasswordメソッドを呼び出して、14文字以上、128文字未満の長さのランダムに生成されたパスワードを取得します。

生成されたパスワードには、英数字と!@#$%^&*()_-+=[{]};:<>|./?の記号のみ含まれています。隠し文字や印刷不能な制御文字は、生成されたパスワードに含まれていません。

MinRequiredPasswordLengthプロパティに対して指定された値が14より大きい場合、GeneratePasswordプロパティから戻されるパスワードの長さは、MinRequiredPasswordLengthプロパティの値です。それ以外の場合、長さは14文字です。

GeneratePasswordメソッドによって生成されたランダム・パスワードは、PasswordStrengthRegularExpressionプロパティの正規表現を渡すことが保証されていません。ただし、ランダム・パスワードは、MinRequiredPasswordLengthおよびMinRequiredNonAlphanumericCharactersプロパティで設定された基準を満たします。

GetAllUsers

このメソッドは、データベース内のすべてのユーザーのコレクションを戻します。

宣言

// C#
public override MembershipUserCollection GetAllUsers(int pageIndex, int pageSize,
   out int totalRecords);

パラメータ

戻り値

MembershipUserオブジェクトを含むMembershipUserCollectionオブジェクト。

例外

ArgumentException - pageIndexパラメータが0未満です。または、pageSizeパラメータが1未満であるか、ページ上限がInt32.MaxValueを超えています。


注意:

ページ下限は(pageIndex * pageSize)であり、ページ上限は(pageIndex *pageSize)+(pageSize - 1)です。

ArgumentNullException - pageIndexpageSizeまたはtotalRecordsパラメータがnullです。

備考

GetAllUsersメソッドから戻される結果は、pageIndexパラメータとpageSizeパラメータによって制約されます。pageSizeパラメータは、MembershipUserCollectionオブジェクトで戻すMembershipUserオブジェクトの最大数を示します。pageIndexパラメータは、結果のどのページを戻すかを示します。値はゼロベースであるため、ゼロは最初のページを示します。totalRecordsパラメータは、構成されたapplicationNameのユーザーの総数を表す出力パラメータです。

GetNumberOfUsersOnline

このメソッドは、アプリケーションに現在アクセスしているユーザー数を戻します。

宣言

// C#
public override int GeNumberOfUsersOnline();

戻り値

アプリケーションに現在アクセスしているユーザー総数を示す整数値。

備考

GetNumberOfUsersOnlineメソッドは、現在のアプリケーションのユーザーのうち、最後のアクティビティ日時が現在の日時からMembership.UserIsOnlineTimeWindowプロパティの値(分単位)を引いた値より大きいユーザーの数を戻します。

カウントには、構成されたapplicationNameに関連付けられているユーザーのみ含まれます。

GetPassword

このメソッドは、指定されたユーザー名のパスワードをデータベースから戻します。

宣言

// C#
public override string GetPassword(string userName, string passwordAnswer);

パラメータ

戻り値

指定したユーザー名のパスワード文字列。

例外

ArgumentNullException - userNameパラメータがnullであるか、RequiresQuestionAndAnswerプロパティがtrueのときにpasswordAnswerパラメータがnullです。

System.Web.Security.MembershipPasswordException - passwordAnswerパラメータが無効であるか、userNameで識別されるユーザーがロックされています。

System.Configuration.Provider.ProviderException - userNameパラメータがメンバーシップ・データベースに見つからないか、メンバーシップ・データベースからパスワードを取得するときにエラーが発生しました。

NotSupportedException - EnablePasswordRetrievalプロパティがfalseに設定されています。

ArgumentException - 次のいずれかの条件が存在します。

備考

先頭および末尾の空白はuserNameパラメータ値とpasswordAnswerパラメータ値から削除されます。

GetPasswordメソッドは、EnablePasswordRetrievalプロパティがtrueに設定されていることを必要とします。ただし、PasswordFormatプロパティがHashedに設定されている場合は、プロバイダの初期化時にProviderExceptionがスローされます。つまり、GetPasswordメソッドは、Hashedパスワードを取得できません。デフォルトでは、EnablePasswordRetrievalプロパティはfalseに設定されます。

RequiresQuestionAndAnswerプロパティがtrueに設定され、GetPasswordメソッドに対してパスワードに対する不正な回答が指定された場合は、パスワードに対する無効な回答の試行を追跡する内部カウンタが1つ増やされます。これにより、ユーザーがロックされ、UnlockUserメソッドの呼び出しによってロック・ステータスがクリアされるまでログオンできなくなることがあります。パスワードに対する正しい回答が指定され、ユーザーが現在ロックされていない場合は、パスワードに対する無効な回答の試行を追跡する内部カウンタがゼロにリセットされます。

GetUser

このメソッドは、ユーザーの一意識別子に基づいて、ユーザー情報をデータベースから戻します。

オーバーロード・リスト:

GetUser(Object, bool)

このメソッドは、指定された一意識別子に基づいて、ユーザー情報をデータベースから戻します。

宣言

// C#
public override MembershipUser GetUser(Object providerUserKey, 
   bool userIsOnline);

パラメータ

戻り値

指定されたユーザーの情報がデータベースから移入されるMembershipUserオブジェクト。

例外

ArgumentException - providerUserKeyパラメータがGUID型ではありません。

ArgumentNullException - providerUserKeyパラメータがnullです。

備考

GetUserメソッドは、ユーザーの最後のアクティビティ日時スタンプを更新するオプションを提供します。

GetUserメソッドは、指定されたユーザーに関する情報が移入されたMembershipUserオブジェクトを戻します。ユーザー名がデータベースに見つからない場合、GetUserメソッドはnull参照を戻します。

GetUser(string, bool)

このメソッドは、指定されたユーザー名に基づいて、ユーザー情報をデータベースから戻します。

宣言

// C#
public override MembershipUser GetUser(string userName, bool userIsOnline);

パラメータ

戻り値

指定されたユーザーの情報がデータベースから移入されるMembershipUserオブジェクト。

例外

ArgumentException - userNameパラメータが空の文字列であるか、カンマを含むか、256文字を超えています。

ArgumentNullException - userNameパラメータがnullです。

備考

GetUserメソッドは、ユーザーの最後のアクティビティ日時スタンプを更新するオプションを提供します。

GetUserメソッドは、指定されたユーザーに関する情報が移入されたMembershipUserオブジェクトを戻します。ユーザー名がデータベースに見つからない場合、GetUserメソッドはnull参照を戻します。

GetUserNameByEmail

このメソッドは、指定された電子メール・アドレスに関連付けられているユーザー名を戻します。

宣言

// C#
public override string GetUserNameByEmail(string emailAddress);

パラメータ

戻り値

指定された電子メール・アドレスに関連付けられているユーザー名。一致が見つからない場合は、null参照が戻されます。

例外

ArgumentException - 電子メール・アドレスが256文字を超えています。

System.Configuration.Provider.ProviderException - 同じ電子メール・アドレスを持つ複数のユーザーがデータベースに存在し、RequiresUniqueEmailプロパティがtrueです。

備考

RequiresUniqueEmailプロパティの値がtrueの場合は、一意の電子メール・アドレスが各ユーザー名に関連付けられている必要があります。

Initialize

このメソッドは、OracleMembershipプロバイダを、ASP.NETアプリケーション構成ファイル(web.config)で指定されたプロパティ値で初期化します。

宣言

// C#
public override void Initialize(string name, NameValueCollection config);

パラメータ

例外

ArgumentNullException - configパラメータがnull値です。

InvalidOperationException - プロバイダが初期化された後に、そのプロバイダに対してInitializeメソッドを呼び出そうとしました。

HttpException - 現在の信頼レベルが「低」未満です。

System.Configuration.Provider.ProviderException - 次のいずれかがアプリケーション構成ファイルに当てはまります。

備考

Initializeメソッドは、アプリケーションによって直接呼び出されることを意図していません。

ResetPassword

このメソッドは、ユーザーのパスワードをリセットし、自動的に生成された新しいパスワードを戻します。

宣言

// C#
public override string ResetPassword(string userName, string passwordAnswer);

パラメータ

戻り値

指定されたユーザーの新しいパスワード。

例外

ArgumentNullException - userNameパラメータがnull参照であるか、RequiresQuestionAndAnswerプロパティがtrueのときにpasswordAnswerパラメータがnullです。

System.Web.Security.MembershipPasswordException - passwordAnswerパラメータが無効であるか、userNameパラメータで識別されるユーザーがロックされています。

ArgumentException - 次のいずれかの条件が存在します。

System.Configuration.Provider.ProviderException - 次のいずれかの条件が存在します。

NotSupportedException - EnablePasswordResetプロパティがfalseに設定されています。

例外 - 処理されない例外が発生しました。

備考

先頭および末尾の空白はuserNameパラメータ値とpasswordAnswerパラメータ値から削除されます。

ResetPasswordメソッドは、PasswordFormatプロパティがHashedに設定されている場合に最もよく使用されます。ユーザーが、ハッシュ形式のパスワードを忘れた場合は、パスワードを取得できません。ただし、ユーザーがパスワードに対する正しい回答を提供した場合、プロバイダはパスワードを新しい自動生成パスワードにリセットできます。ResetPasswordメソッドでは、EnablePasswordResetプロパティがtrueに設定されている必要があります。パスワードに対する不正な回答がResetPasswordメソッドに指定されている場合は、無効なパスワードの試行を追跡する内部カウンタが1つ増やされます。これにより、ユーザーがロックされ、UnlockUserメソッドの呼び出しによってロック・ステータスがクリアされるまでログオンできなくなることがあります。パスワードに対する正しい回答が指定され、ユーザーが現在ロックされていない場合は、パスワードに対する無効な回答の試行を追跡する内部カウンタがゼロにリセットされます。

ResetPasswordメソッドによって生成されたランダム・パスワードは、PasswordStrengthRegularExpressionプロパティの正規表現を渡すことが保証されていません。ただし、ランダム・パスワードは、MinRequiredPasswordLengthおよびMinRequiredNonAlphanumericCharactersプロパティで設定された基準を満たします。

UnlockUser

このメソッドは、ユーザーをロック解除してユーザーを検証できるようにします。

宣言

// C#
public override bool UnLockUser(string userName);

パラメータ

戻り値

ユーザーが正常にロック解除された場合はtrueを戻し、それ以外の場合はfalseを戻します。

例外

ArgumentException - userNameパラメータが空の文字列であるか、カンマを含むか、256文字を超えています。

ArgumentNullException - userNameパラメータがnullです。

備考

先頭および末尾の空白はuserNameパラメータ値から削除されます。

UpdateUser

このメソッドは、データベース内のユーザーに関する情報を更新します。

宣言

// C#
public override void UpdateUser(MembershipUser membershipUser);

パラメータ

例外

ArgumentException - 次のいずれかの条件が存在します。

Argument Null Exception - membership Userパラメータがnullであるか、membership Userパラメータのsurnameまたはmailプロパティがnullです。

System.Configuration.Provider.ProviderException - 次のいずれかの条件が存在します。

備考

指定されたユーザーのMailCommentIsApprovedLast Login DateおよびLastActivityDateプロパティ値は、変更してからUpdateUserメソッドで更新できます。ただし、ユーザーのパスワードは変更および更新できません。ユーザーのパスワードを更新するには、MembershipUserクラスのChangePasswordメソッドを使用します。

ValidateUser

このメソッドはユーザーを検証します。

宣言

// C#
public override bool ValidateUser(string userName, string password);

パラメータ

戻り値

指定されたユーザー名とパスワードが有効な場合はtrueを戻し、有効でないかユーザーがデータベースに存在しない場合はfalseを戻します。

備考

先頭および末尾の空白はuserNameパラメータ値とpasswordパラメータ値から削除されます。

ユーザーが正常に検証された場合、最後のアクティビティ日とサインイン日の値がデータベース内で現在の日時に更新されます。

ValidateUserメソッドは、isApprovedパラメータをfalseに設定して作成された任意のユーザーについてfalseを戻します。

ValidateUserメソッドに対して不正なパスワードが指定された場合は、無効なパスワードの試行を追跡する内部カウンタが1つ増やされます。これにより、ユーザーがロックされ、UnlockUserメソッドの呼び出しによってロック・ステータスがクリアされるまでログオンできなくなることがあります。正しいパスワードが指定され、ユーザーが現在ロックされていない場合は、無効なパスワードおよびパスワードに対する無効な回答の試行を追跡する内部カウンタがゼロにリセットされます。


OracleMembershipProviderパブリック・イベント

OracleMembershipProviderパブリック・イベントを、表2-10にリストします。

表2-10 OracleMembershipProviderパブリック・イベント

パブリック・イベント 説明

ValidatingPassword

System.Web.Security.MembershipProviderからの継承