ActiveDirectoryMembershipProvider クラス

定義

Active Directory サーバーおよび Active Directory Application Mode サーバー内の ASP.NET アプリケーションのメンバーシップ情報のストレージを管理します。

public ref class ActiveDirectoryMembershipProvider : System::Web::Security::MembershipProvider
public class ActiveDirectoryMembershipProvider : System.Web.Security.MembershipProvider
type ActiveDirectoryMembershipProvider = class
    inherit MembershipProvider
Public Class ActiveDirectoryMembershipProvider
Inherits MembershipProvider
継承
ActiveDirectoryMembershipProvider

次のコード例は、インスタンスを使用するように構成された ASP.NET アプリケーションのWeb.config ファイルを ActiveDirectoryMembershipProvider 示しています。 最初の例では、Active Directory 属性の既定のマッピングを使用しており、質問と回答や検索メソッドを呼び出す機能を使用したパスワード リセット セキュリティはサポートされていません。 2 番目の例では、インスタンスに対して許可されているすべての属性設定を ActiveDirectoryMembershipProvider 示します。

最初の例は、Active Directory 属性の既定のマッピングを使用した単純な構成ファイルです。

<configuration>  
  <connectionStrings>  
    <add name="ADService" connectionString="LDAP://ldapServer/" />  
  </connectionStrings>  
  <system.web>  
    <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">  
      <providers>  
        <add name="AspNetActiveDirectoryMembershipProvider"   
          type="System.Web.Security.ActiveDirectoryMembershipProvider,   
          System.Web, Version=2.0.3600, Culture=neutral,   
          PublicKeyToken=b03f5f7f11d50a3a" />  
      </providers>  
    </membership>  
  </system.web>  
</configuration>  

この例では、 のインスタンス ActiveDirectoryMembershipProviderで使用できるすべての属性設定を示します。

<configuration>  
  <connectionStrings>  
    <add name="ADService" connectionString="LDAP://ldapServer/" />  
  </connectionStrings>  
  <system.web>  
    <membership  
      defaultProvider="AspNetActiveDirectoryMembershipProvider">  
      <providers>  
        <add name="AspNetActiveDirectoryMembershipProvider"  
          type="System.Web.Security.ActiveDirectoryMembershipProvider,  
          System.Web, Version=1.0.3600, Culture=neutral,  
          PublicKeyToken=b03f5f7f11d50a3a"  
          connectionStringName="ADService"  
          connectionUsername="UserWithAppropriateRights"  
          connectionPassword="PasswordForUser"  
          connectionProtection="Secure"  
          enablePasswordReset="true"  
          enableSearchMethods="true"  
          requiresQuestionAndAnswer="true"  
          applicationName="/"  
          description="Default AD connection"  
          requiresUniqueEmail="false"  
          clientSearchTimeout="30"  
          serverSearchTimeout="30"  
          timeoutUnit="Minutes"  
          attributeMapPasswordQuestion="department"  
          attributeMapPasswordAnswer="division"  
          attributeMapFailedPasswordAnswerCount="singleIntAttribute"  
         attributeMapFailedPasswordAnswerTime="singleLargeIntAttribute"  
         attributeMapFailedPasswordAnswerLockoutTime="singleLargeIntAttribute"  
          attributeMapEmail = "mail"  
          attributeMapUsername = "userPrincipalName"  
          maxInvalidPasswordAttempts = "5"  
          passwordAttemptWindow = "10"  
          passwordAnswerAttemptLockoutDuration = "30"  
          minRequiredPasswordLength="7"  
          minRequiredNonalphanumericCharacters="1"  
          passwordStrengthRegularExpression="  
          @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})" />  
        />  
      </providers>  
    </membership>  
  </system.web>  
</configuration>  

clientSearchTimeout 既定値 serverSearchTimeout は 分です。 単位を変更するには、属性値を timeoutUnit "Days"、"Hours"、"Minutes"、"Seconds"、または "ミリ秒" のいずれかに設定します。 属性が指定されていない場合、既定値は "Minutes" です。

注釈

このクラスは、 クラスと MembershipUser クラスによって使用されMembership、Active Directory (AD) または Active Directory アプリケーション モード (ADAM) サーバーを使用して ASP.NET アプリケーションのメンバーシップ サービスを提供します。

Note

ADAM サーバーを使用するには、特定の構成が必要です。 詳細については、以下の ADAM 構成に関するセクションを参照してください。

重要

インスタンスは ActiveDirectoryMembershipProvider 、ASP.NET の完全信頼ポリシーの既定の構成でのみ機能します。 部分信頼レベルでインスタンスを ActiveDirectoryMembershipProvider 使用するには、アプリケーションの適切な信頼ポリシー ファイルを変更するか、GAC に展開される "サンドボックス" アセンブリを作成する必要があります。

クラスを ActiveDirectoryMembershipProvider 実行するには、無制限のアクセス許可が必要です DirectoryServicesPermission 。 このアクセス許可は、ASP.NET で指定された部分信頼ポリシー ファイルには追加されません。 部分信頼ポリシー ファイルにアクセス許可を追加 DirectoryServicesPermission すると、 クラスの ActiveDirectoryMembershipProvider 使用が有効になりますが、これにより System.DirectoryServices 、名前空間クラスは、ASP.NET ページで実行されている任意のコードで使用できるようになります。 このオプションは、セキュリティで保護されたロックダウン モードで実行する必要がある Web サーバーには推奨されません。

別の方法として、 クラスを呼び出す "サンドボックス" アセンブリを ActiveDirectoryMembershipProvider 作成することもできます。 このアセンブリには、メソッド呼び出しをクラスに転送する ActiveDirectoryMembershipProvider ラッパー クラスまたは クラスから派生したクラスを ActiveDirectoryMembershipProvider 含めることができます。 どちらの場合も、ラッパー クラスは無制限 DirectoryServicesPermission のアクセス許可をアサートする必要があります。 GAC にサンドボックス アセンブリをデプロイし、アセンブリを (APTCA) 属性で AllowPartiallyTrustedCallersAttribute マークします。 これにより、部分的に信頼された ASP.NET コードでラッパー クラスを呼び出すことができ、ラッパー クラスが無制限 DirectoryServicesPermission のアクセス許可を内部的にアサートするため、ラッパー クラスはプロバイダーを正常に呼び出すことができるようになります

使用する Active Directory サーバー、Active Directory ドメイン、または ADAM アプリケーション パーティションを識別する connectionStrings 要素 (ASP.NET 設定スキーマ) エントリをWeb.config ファイルに作成する必要があります。 プロバイダーは、ドメイン スコープ、またはドメイン内のサブスコープでのみ動作します。 次の表に、使用できる接続文字列と使用されるスコープを示します。

接続文字列 スコープ
<LDAP:// ドメインまたはサーバー>:[port]

ADAM ではポート番号は省略可能であり、Active Directory には必要ありません。
プロバイダーは、指定されたドメインまたはサーバーに対して実行されます。 AD では、ユーザーの作成と削除は既定のユーザー コンテナーで行われます。 検索メソッドを含む他のすべての操作は、ドメインの既定の名前付けコンテキストにルート化されます。

接続文字列で特定のサーバーではなく Active Directory ドメインを指定しEnablePasswordReset、 プロパティが の場合、trueActiveDirectoryMembershipProviderインスタンスは常にドメインの PDC ロールを持つサーバーに接続して、パスワードの変更が有効になり、メソッドが呼び出されたときにValidateUser使用できるようにします。

ADAM を使用する場合、この接続文字列は許可されず、 がスロー NotSupportedExceptionされます。
<LDAP:// ドメインまたはサーバー>:[port]/<container dn>

ADAM ではポート番号は省略可能であり、Active Directory には必要ありません。
プロバイダーは、指定されたドメインまたはサーバーに対して実行されます。 ユーザーの作成と削除は、指定されたコンテナーでのみ行われます。 他のすべての操作 (検索メソッドを含む) は、コンテナーにルート化されたサブツリー検索を実行します。

ADAM サーバーの場合、コンテナーはアプリケーション パーティションのルート、またはアプリケーション パーティション内のコンテナーを指定します。

パフォーマンスを向上させるために、接続文字列で特定のコンテナーを定義することをお勧めします。

インスタンスは ActiveDirectoryMembershipProvider 、ディレクトリ属性をプロパティに ActiveDirectoryMembershipUser マップします。 既定の属性は、Web.config ファイルで属性マッピングが実行されない場合に使用されます。 属性マッピングの詳細については、クラスのドキュメントの個々のプロパティを ActiveDirectoryMembershipUser 参照してください。

次の表に、 ActiveDirectoryMembershipUser プロパティとその既定の属性マッピングを示します。

重要

このクラスはActiveDirectoryMembershipProvider、プロバイダー属性がディレクトリ内のユーザー オブジェクトのコア属性にマップされないことを明示的にチェックしません。 マップされた属性を使用して、ディレクトリからの機密情報が公開されないようにする必要があります。

プロパティ 既定のディレクトリ属性 マップできますか?
ProviderUserKey securityIdentifier いいえ
UserName userPrincipalName はい。ただし、userPrincipalName または sAMAccountName である必要があります
Comment コメント いいえ
CreationDate whenCreated いいえ
Email mail はい。ただし、Unicode String 型の単一値属性である必要があります。
LastActivityDate 該当なし では ActiveDirectoryMembershipProviderサポートされていません。
LastLoginDate 該当なし では ActiveDirectoryMembershipProviderサポートされていません。
LastPasswordChangedDate pwdLastSet いいえ
PasswordQuestion なし はい。ただし、Unicode String 型の単一値属性である必要があります。
IsApproved ユーザー アカウント制御 (AD)

mDS-UserAccountDisabled (ADAM)
いいえ
IsLockedOut lockoutTime と AD ロックアウト期間から計算される (Windows 2000 の AD)

msDS-User-Account-Control-Computed (Windows Server 2003 の AD)

msDS-User-Account-Control-Computed (ADAM)
いいえ
LastLockoutDate 無効なパスワードの試行が多すぎるためにユーザーがロックアウトされた場合は、ロックアウト時間属性が返されます。

不正なパスワード応答の試行が多すぎるためにユーザーがロックアウトされた場合は、 で attributeMapFailedPasswordAnswerLockoutTime 定義された 属性に格納されている値が返されます。

パスワードが正しくないためにユーザーがロックアウトされ、パスワードの試行が多すぎる場合は、最新の日付/時刻値が返されます。

アカウントがロックアウトされていない場合は、SQL 互換性のために 1/1/1754 を返します。
いいえ

EnablePasswordReset の両方のRequiresQuestionAndAnswerプロパティが の場合、ActiveDirectoryMembershipProviderクラスはtrue、ユーザーに事前に定義された質問に回答するように要求することで、パスワード リセット セキュリティをサポートします。 質問と回答をサポートするには、アプリケーション構成ファイルの メンバーシップのプロバイダーの add 要素 (ASP.NET 設定スキーマ) を使用して、次の構成属性を設定する必要があります。

構成属性 属性の型
attributeMapPasswordQuestion Unicode String 型の単一値属性である必要があります。
attributeMapPasswordAnswer Unicode String 型の単一値属性である必要があります。
attributeMapFailedPasswordAnswerCount Integer 型の単一値属性である必要があります。
attributeMapFailedPasswordAnswerTime Large Integer/Interval 型の単一値属性である必要があります。
attributeMapFailedPasswordAnswerLockoutTime Large Integer/Interval 型の単一値属性である必要があります。

パスワード リセット セキュリティの使用の詳細については、 プロパティを RequiresQuestionAndAnswer 参照してください。

Active Directory 接続

クラスを ActiveDirectoryMembershipProvider 使用して Active Directory または Active Directory アプリケーション モード (ADAM) サーバーに接続する場合、 connectionProtection アプリケーション構成ファイルの メンバーシップ (ASP.NET 設定スキーマ) のプロバイダーの add 要素 を使用して設定される属性によって、クラスが接続を介して実行できる操作の種類が ActiveDirectoryMembershipProvider 制限される場合があります。 属性は connectionProtection 、インスタンスが Active Directory または ADAM サーバーへの接続を作成するために使用するメソッド ActiveDirectoryMembershipProvider も決定します。

次の表は、Active Directory に connectionProtection 接続するときの 属性の効果を示しています。

connectionProtection の設定 結果
None クラスは ActiveDirectoryMembershipProvider 、これらの制限を使用して Active Directory に接続します。

- パスワードを設定するすべてのメソッドは失敗します。 Active Directory では、パスワードを変更するときにセキュリティで保護された接続が必要です。
- アプリケーション構成ファイルのconnectionUsernameメンバーシップ (ASP.NET 設定スキーマ) のプロバイダーの add 要素を使用して、 属性と connectionPassword 属性を明示的に設定する必要があります。それ以外のActiveDirectoryMembershipProvider場合、インスタンスは例外をProviderExceptionスローします。
Secure クラスは ActiveDirectoryMembershipProvider 、SSL を使用して Active Directory への接続を試みます。 SSL が失敗した場合、サインアンドシールを使用して Active Directory に接続する 2 回目の試行が行われます。 両方の試行が失敗した場合、 ActiveDirectoryMembershipProvider インスタンスは例外を ProviderException スローします。

プロセス資格情報と明示的な資格情報の両方がサポートされています。

次の表は、ADAM サーバーに connectionProtection 接続するときの 属性の効果を示しています。

connectionProtection の設定 結果
None クラスは ActiveDirectoryMembershipProvider 、この制限を使用して ADAM サーバーに接続します。

- セキュリティで保護されていない接続を介してパスワードを送信および変更できるように ADAM サーバーを明示的に構成しない限り、パスワードを設定するメソッドは失敗します。

プロセス資格情報と明示的な資格情報の両方がサポートされています。
Secure クラスは ActiveDirectoryMembershipProvider 、SSL を使用して ADAM サーバーへの接続を試みます。 接続できない場合、 ActiveDirectoryMembershipProvider インスタンスは例外を ProviderException スローします。

プロセス資格情報と明示的な資格情報の両方がサポートされています。

ADAM 構成

ADAM サーバーを使用する場合、ADAM インスタンスには、 クラスを定義 User するスキーマが含まれている必要があります。 ADAM インストール ディレクトリで User 使用できるファイルの LDIF インポートを使用して MS-User.ldf 、 クラスをインポートできます。

クラスは ActiveDirectoryMembershipProvider 、既定のネットワーク ポートを使用するように構成された ADAM サーバーで動作します。 次の表に、ADAM サーバーに必要な既定値を示します。

connectionProtection の設定 ADAM ポートが必要です
None 389
Secure 636

コンストラクター

ActiveDirectoryMembershipProvider()

ActiveDirectoryMembershipProvider クラスの新しいインスタンスを作成します。

プロパティ

ApplicationName

カスタム メンバーシップ プロバイダーを使用するアプリケーションの名前。

CurrentConnectionProtection

サーバーとの通信を保護するために使用されている現在のセキュリティ レベルを取得します。

Description

管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。

(継承元 ProviderBase)
EnablePasswordReset

ActiveDirectoryMembershipProvider インスタンスによってユーザーにパスワードのリセットが許可されているかどうかを示す値を取得します。

EnablePasswordRetrieval

ユーザーのパスワードを Active Directory データ ストアから取得できるかどうかを示す値を取得します。 このプロパティは常に false を返します。

EnableSearchMethods

検索指向の ActiveDirectoryMembershipProvider のメソッドを使用できるかどうかを示す値を取得します。

MaxInvalidPasswordAttempts

パスワードのリセットの質問に対する無効な解答をユーザーが入力できる回数を取得します。

MinRequiredNonAlphanumericCharacters

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

MinRequiredPasswordLength

パスワードに最低限必要な長さを取得します。

Name

構成時にプロバイダーを参照するために使用される表示名を取得します。

(継承元 ProviderBase)
PasswordAnswerAttemptLockoutDuration

無効なパスワードの解答をユーザーが所定の回数入力した後にそのユーザー アカウントがロックアウトされる時間の長さを取得します。

PasswordAttemptWindow

有効なパスワードまたはパスワードの解答の指定までに、連続して失敗した試行を追跡する時間枠を取得します。

PasswordFormat

Active Directory データ ストアでのパスワードの形式を示す値を取得します。

PasswordStrengthRegularExpression

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

RequiresQuestionAndAnswer

ユーザーの作成時にパスワードの質問と解答を要求するようにメンバーシップ プロバイダーが構成されているかどうかを示す値を取得します。

RequiresUniqueEmail

Active Directory サーバーに格納される電子メール アドレスが一意である必要があるかどうかを示す値を取得します。

メソッド

ChangePassword(String, String, String)

指定したユーザーのパスワードを変更します。

ChangePasswordQuestionAndAnswer(String, String, String, String)

Active Directory ストアでユーザーのパスワードの質問と解答を更新します。

CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus)

新規ユーザーを Active Directory データ ストアに追加します。

DecryptPassword(Byte[])

暗号化されたパスワードの暗号化を解除します。

(継承元 MembershipProvider)
DeleteUser(String, Boolean)

Active Directory データ ストアからユーザーのメンバーシップ情報を削除します。

EncryptPassword(Byte[])

パスワードを暗号化します。

(継承元 MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

指定されたパスワード互換モードを使用して、指定されたパスワードを暗号化します。

(継承元 MembershipProvider)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
FindUsersByEmail(String, Int32, Int32, Int32)

ユーザーの電子メール アドレスに基づいて、Active Directory データ ストアからメンバーシップ ユーザーのコレクションを返します。

FindUsersByName(String, Int32, Int32, Int32)

ユーザー名に基づいて、Active Directory データ ストアからユーザーのコレクションを返します。

GeneratePassword()

ランダム パスワードを生成します。

GetAllUsers(Int32, Int32, Int32)

Active Directory データ ソースに格納されたすべてのユーザーのコレクションを取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetNumberOfUsersOnline()

常に NotSupportedException 例外をスローします。

GetPassword(String, String)

指定したユーザーのパスワードをデータベースから返します。 ActiveDirectoryMembershipProvider クラスは、このメソッドをサポートしません。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetUser(Object, Boolean)

指定したユーザー キーに関連付けられているメンバーシップ ユーザー情報を取得します。

GetUser(String, Boolean)

指定したユーザー名に関連付けられたメンバーシップ ユーザー情報を取得します。

GetUserNameByEmail(String)

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

Initialize(String, NameValueCollection)

アプリケーションの構成ファイルのプロパティ値を使用して、ActiveDirectoryMembershipProvider インスタンスを初期化します。 このメソッドは、コードから呼び出すためのものではありません。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnValidatingPassword(ValidatePasswordEventArgs)

イベント ハンドラーが定義されている場合に ValidatingPassword イベントを発生させます。

(継承元 MembershipProvider)
ResetPassword(String, String)

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

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
UnlockUser(String)

ロックを解除して、メンバーシップ ユーザーの検証を可能にします。

UpdateUser(MembershipUser)

Active Directory データ ストア内のユーザーに関する情報を更新します。

ValidateUser(String, String)

指定したユーザー名とパスワードが Active Directory データ ストアに存在しているかどうかを検証します。

イベント

ValidatingPassword

ユーザーが作成されるとき、パスワードが変更されるとき、またはリセットされるときに発生します。

(継承元 MembershipProvider)

適用対象

こちらもご覧ください