ActiveDirectoryMembershipProvider クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
- 継承
例
次のコード例は、インスタンスを使用するように構成された 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"、または "Milliseconds" のいずれかに設定します。 属性が指定されていない場合、既定値は "Minutes" です。
注釈
このクラスは、 クラスと MembershipUser クラスによってMembership、Active Directory (AD) または Active Directory アプリケーション モード (ADAM) サーバーを使用して ASP.NET アプリケーションのメンバーシップ サービスを提供するために使用されます。
注意
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、 プロパティが の場合、 true ActiveDirectoryMembershipProviderインスタンスは常にドメインの 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 | いいえ |
はい。ただし、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 データ ストアから取得できるかどうかを示す値を取得します。 このプロパティは常に |
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) |
適用対象
こちらもご覧ください
.NET