ActiveDirectoryMembershipProvider イベント
ActiveDirectoryMembershipProvider クラス
アセンブリ: System.Web (system.web.dll 内)


このクラスは、AD (Active Directory) サーバーまたは ADAM (Active Directory Application Mode) サーバーを使用する ASP.NET アプリケーションに対してメンバシップ サービスを提供するために、Membership クラスおよび MembershipUser クラスで使用されます。
![]() |
---|
![]() |
---|
ActiveDirectoryMembershipProvider インスタンスは、ASP.NET の完全信頼ポリシーの既定の構成でのみ機能します。部分信頼レベルで ActiveDirectoryMembershipProvider インスタンスを使用するには、アプリケーションの該当する信頼ポリシー ファイルで変更を行うか、GAC に配置される "サンドボックス" アセンブリを作成する必要があります。 ActiveDirectoryMembershipProvider クラスを実行するには、無制限の DirectoryServicesPermission アクセス許可が必要です。このアクセス許可は、ASP.NET で提供される部分信頼ポリシー ファイルには追加されません。部分信頼ポリシー ファイルに DirectoryServicesPermission アクセス許可を追加すると ActiveDirectoryMembershipProvider クラスを使用できるようになりますが、これを行うと、ASP.NET ページで実行中の任意のコードで System.DirectoryServices 名前空間のすべてのクラスを使用できるようになります。セキュリティで保護された、ロックダウン モードでの実行が必要な Web サーバーの場合は、このオプションはお勧めしません。 代わりに、ActiveDirectoryMembershipProvider クラスを呼び出す "サンドボックス" アセンブリを作成できます。このアセンブリには、メソッド呼び出しを ActiveDirectoryMembershipProvider クラスに転送するラッパー クラスか、または ActiveDirectoryMembershipProvider クラスから派生するクラスを格納できます。どちらの場合も、ラッパー クラスは無制限の DirectoryServicesPermission アクセス許可をアサートする必要があります。GAC にサンドボックス アセンブリを配置し、APTCA (AllowPartiallyTrustedCallersAttribute) 属性を使用してこのアセンブリをマークします。これにより、部分的に信頼された ASP.NET コードでラッパー クラスを呼び出すことができるようになります。ラッパー クラスは内部で無制限の DirectoryServicesPermission アクセス許可をアサートするので、正常にプロバイダを呼び出すことができます。 |
使用する Active Directory サーバー、Active Directory ドメイン、または ADAM アプリケーション パーティションを指定する connectionStrings 要素 (ASP.NET 設定スキーマ) エントリを Web.config ファイルに作成する必要があります。プロバイダは、ドメイン スコープまたはドメイン内のサブスコープでのみ機能します。許可される接続文字列および使用されるスコープを次の表に示します。
プロバイダは、指定したドメインまたはサーバーに対して実行されます。AD の場合、ユーザーの作成と削除は既定のユーザー コンテナで行われます。その他のすべての操作 (すべての検索メソッドを含む) は、ドメインの既定の名前付けコンテキストをルートとします。 接続文字列に特定のサーバーではなく Active Directory ドメインが指定されており、さらに、EnablePasswordReset プロパティが true の場合、ActiveDirectoryMembershipProvider インスタンスは常に、そのドメインの PDC の役割を担っているサーバーに接続されます。これにより、ValidateUser メソッドが呼び出されたときに、パスワードの変更が有効になり、使用できるようになります。 ADAM を使用している場合はこの接続文字列は許可されず、NotSupportedException がスローされます。 | |
プロバイダは、指定したドメインまたはサーバーに対して実行されます。ユーザーの作成と削除は、指定したコンテナでのみ行われます。その他のすべての操作 (すべての検索メソッドを含む) は、コンテナをルートとしてサブツリー検索を実行します。 ADAM サーバーの場合、コンテナはアプリケーション パーティションのルート、またはアプリケーション パーティション内のコンテナを指定します。 |
ActiveDirectoryMembershipProvider インスタンスは、ディレクトリ属性を ActiveDirectoryMembershipUser のプロパティにマップします。Web.config ファイルで属性がマップされていない場合は、既定の属性が使用されます。属性のマップの詳細については、ActiveDirectoryMembershipUser クラスのドキュメントで個別のプロパティのトピックを参照してください。
ActiveDirectoryMembershipUser のプロパティとその既定の属性のマップを次の表に示します。
ProviderUserKey | いいえ | |
userPrincipalName | はい。ただし、userPrincipalName または sAMAccountName のいずれかである必要があります。 | |
いいえ | ||
CreationDate | whenCreated | いいえ |
LastActivityDate | ActiveDirectoryMembershipProvider でサポートされていません。 | |
LastLoginDate | ActiveDirectoryMembershipProvider でサポートされていません。 | |
LastPasswordChangedDate | pwdLastSet | いいえ |
PasswordQuestion | なし | |
IsApproved | AD (User-Account-Control) ADAM (mDS-UserAccountDisabled) | いいえ |
IsLockedOut | lockoutTime および AD ロックアウト期間から計算されます (Windows 2000 上の AD)。 msDS-User-Account-Control-Computed (Windows Server 2003 上の AD) msDS-User-Account-Control-Computed (ADAM) | いいえ |
LastLockoutDate | 無効なパスワードの試行が所定の回数行われたことが原因でユーザーがロックアウトされた場合は、ロックアウト時刻属性が返されます。 無効なパスワードの解答の試行が所定の回数行われたことが原因でユーザーがロックアウトされた場合は、attributeMapFailedPasswordAnswerLockoutTime で定義された属性に格納された値が返されます。 1 つの無効なパスワードと多数の無効なパスワード試行の両方が原因でユーザーがロックアウトされた場合は、最後の日付/時刻の値が返されます。 | いいえ |
RequiresQuestionAndAnswer プロパティと EnablePasswordReset プロパティの両方が true の場合、ActiveDirectoryMembershipProvider クラスは、事前に設定されている質問に解答するようユーザーに要求することにより、パスワードのリセット セキュリティをサポートします。質問と解答をサポートするには、membership の providers の add 要素 (ASP.NET 設定スキーマ) を使用して、アプリケーションの構成ファイルで次の構成属性を設定する必要があります。
属性の型 | |
---|---|
attributeMapPasswordQuestion | |
attributeMapPasswordAnswer | |
attributeMapFailedPasswordAnswerCount | |
attributeMapFailedPasswordAnswerTime | |
attributeMapFailedPasswordAnswerLockoutTime |
パスワードのリセット セキュリティの使い方の詳細については、RequiresQuestionAndAnswer プロパティのトピックを参照してください。
Active Directory への接続
ActiveDirectoryMembershipProvider クラスを使用して Active Directory サーバーまたは ADAM (Active Directory Application Mode) サーバーに接続する場合、membership の providers の add 要素 (ASP.NET 設定スキーマ) を使用してアプリケーションの構成ファイルで設定した connectionProtection 属性によって、その接続を介して ActiveDirectoryMembershipProvider クラスで実行できる操作の種類が限定される場合があります。connectionProtection 属性によって、Active Directory サーバーまたは ADAM サーバーへの接続を作成するときに ActiveDirectoryMembershipProvider インスタンスで使用するメソッドも決まります。
Active Directory に接続する場合の connectionProtection 属性の影響を次の表に示します。
connectionProtection 設定値 | |
---|---|
None | ActiveDirectoryMembershipProvider クラスは、次の制限付きで Active Directory に接続します。 |
ActiveDirectoryMembershipProvider クラスは、SSL を使用して Active Directory に接続しようとします。SSL が失敗した場合、署名とシールを使用して、Active Directory に接続しようとします。この試みが両方とも失敗した場合、ActiveDirectoryMembershipProvider インスタンスは ProviderException 例外をスローします。 |
ADAM サーバーに接続する場合の connectionProtection 属性の影響を次の表に示します。
ADAM の構成
ADAM サーバーを使用する場合、ADAM インスタンスには、User クラスを定義するスキーマが格納されている必要があります。ADAM のインストール ディレクトリにある MS-User.ldf ファイルの LDIF インポートを使用して、User クラスをインポートできます。User クラス、および ADAM サーバーにインポートできる他のスキーマの詳細については、MSDN の文書「Adding User Classes」(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adam/adam/adding_user_classes.asp) を参照してください。
ActiveDirectoryMembershipProvider クラスは、既定のネットワーク ポートを使用するように構成された ADAM サーバーで適切に機能します。ADAM サーバーで予想される既定値を次の表に示します。
ADAM サーバーで既定のポートを使用していない場合は、Microsoft Knowledge Base の Q817583 (「Active Directory Services does not request secure authorization over an SSL connection」) を参照してください。

ActiveDirectoryMembershipProvider インスタンスを使用するように構成された ASP.NET アプリケーションの Web.config ファイルのコード例を次に示します。最初の例では、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" attributeMapPasswordQuestion="department" attributeMapPasswordAnswer="division" attributeMapFailedPasswordAnswerCount="singleIntAttribute" attributeMapFailedPasswordAnswerTime="singleLargeIntAttribute" attributeMapFailedPassswordAnswerLockoutTime="singleLargeIntAttribute" maxInvalidPasswordAttemps = "5" passwordAttemptWindow = "10" passwordAnswerAttemptLockoutDuration = "30" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordStrengthRegularExpression=" @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})" /> /> </providers> </membership> </system.web> </configuration>

- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)。要求値 : LinkDemand。アクセス許可値 : Minimal。
- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)。要求値 : InheritanceDemand。アクセス許可値 : Minimal。
- DirectoryServicesPermission (Active Directory サーバーにアクセスするために必要なアクセス許可)。要求値 : LinkDemand。アクセス許可値 : Unrestricted。
- DirectoryServicesPermission (Active Directory サーバーにアクセスするために必要なアクセス許可)。要求値 : InheritanceDemand。アクセス許可値 : Unrestricted。

System.Configuration.Provider.ProviderBase
System.Web.Security.MembershipProvider
System.Web.Security.ActiveDirectoryMembershipProvider


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ActiveDirectoryMembershipProvider コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


ActiveDirectoryMembershipProvider コンストラクタは、アプリケーションの構成に指定された ActiveDirectoryMembershipProvider クラスのインスタンスを生成する際、ASP.NET によって呼び出されます。このコンストラクタは、コードで使用するためのものではありません。

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ActiveDirectoryMembershipProvider プロパティ


ActiveDirectoryMembershipProvider メソッド


名前 | 説明 | |
---|---|---|
![]() | DecryptPassword | 暗号化されたパスワードを復号化します。 ( MembershipProvider から継承されます。) |
![]() | EncryptPassword | パスワードを暗号化します。 ( MembershipProvider から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
![]() | OnValidatingPassword | イベント ハンドラが定義されている場合に ValidatingPassword イベントを発生させます。 ( MembershipProvider から継承されます。) |

ActiveDirectoryMembershipProvider メンバ
Active Directory サーバーおよび Active Directory Application Mode サーバー内の ASP.NET アプリケーションのメンバシップ情報のストレージを管理します。
ActiveDirectoryMembershipProvider データ型で公開されるメンバを以下の表に示します。




名前 | 説明 | |
---|---|---|
![]() | DecryptPassword | 暗号化されたパスワードを復号化します。 (MembershipProvider から継承されます。) |
![]() | EncryptPassword | パスワードを暗号化します。 (MembershipProvider から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
![]() | OnValidatingPassword | イベント ハンドラが定義されている場合に ValidatingPassword イベントを発生させます。 (MembershipProvider から継承されます。) |


- ActiveDirectoryMembershipProviderのページへのリンク