다음을 통해 공유


ActiveDirectoryMembershipProvider 클래스

정의

Active Directory 및 Active Directory 애플리케이션 모드 서버에서 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

예제

다음 코드 예제에서는 Web.config 파일을 사용 하도록 구성 하는 ASP.NET 애플리케이션에 대 한 표시는 ActiveDirectoryMembershipProvider 인스턴스. 첫 번째 예제에서는 Active Directory 특성에 대한 기본 매핑을 사용하며 질문과 대답 또는 검색 메서드를 호출하는 기능을 사용하여 암호 재설정 보안을 지원하지 않습니다. 두 번째 예제에서는 인스턴스에 허용되는 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>

clientSearchTimeoutserverSearchTimeout 기본값은 분입니다. 단위를 변경하려면 특성 값을 "Days", "Hours", "Minutes", "Seconds" 또는 "Milliseconds" 중 하나로 설정합니다 timeoutUnit . 특성을 지정하지 않으면 기본값은 "분"입니다.

설명

이 클래스에서 사용 되는 MembershipMembershipUser 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 페이지에서 실행되는 모든 코드에서 네임스페이스 클래스를 사용할 수 있습니다. 이 옵션은 안전한 잠금 모드에서 실행해야 하는 웹 서버에는 권장되지 않습니다.

또는 클래스를 호출하는 "샌드박스" 어셈블리를 ActiveDirectoryMembershipProvider 만들 수 있습니다. 이 어셈블리에는 메서드 호출 ActiveDirectoryMembershipProvider 을 클래스로 전달하는 래퍼 클래스 또는 클래스에서 파생된 클래스가 ActiveDirectoryMembershipProvider 포함될 수 있습니다. 두 경우 모두 래퍼 클래스는 무제한 DirectoryServicesPermission 권한을 어설션해야 합니다. GAC에 샌드박스 어셈블리를 배포하고 어셈블리를 AllowPartiallyTrustedCallersAttribute (APTCA) 특성으로 표시합니다. 이렇게 하면 부분적으로 신뢰할 수 있는 ASP.NET 코드가 래퍼 클래스를 호출할 수 있으며 래퍼 클래스가 내부적으로 무제한 DirectoryServicesPermission 권한을 어설션하므로 래퍼 클래스가 공급자를 성공적으로 호출할 수 있습니다.

만들어야 합니다는 connectionStrings 요소 (ASP.NET 설정 스키마) Active Directory 서버, Active Directory 도메인 또는 ADAM 애플리케이션 파티션을 사용 하 게 식별 하는 Web.config 파일의 항목입니다. 공급자는 도메인 범위 또는 도메인 내의 하위 범위에서만 작동합니다. 다음 표에는 허용되는 연결 문자열과 사용된 범위가 나와 있습니다.

연결 문자열 Scope
<LDAP:// 도메인 또는 서버>:[포트]

포트 번호는 ADAM의 경우 선택 사항이며 Active Directory에는 필요하지 않습니다.
공급자는 지정된 도메인 또는 서버에 대해 실행됩니다. AD를 사용하면 기본 사용자 컨테이너에서 사용자 만들기 및 삭제가 수행됩니다. 검색 방법을 포함한 다른 모든 작업은 도메인의 기본 명명 컨텍스트에 루팅됩니다.

연결 문자열이 특정 서버가 아닌 Active Directory 도메인을 지정하고 EnablePasswordReset 속성이 인 ActiveDirectoryMembershipProvider 경우 인스턴스는 true항상 도메인에 대한 PDC 역할을 사용하여 서버에 연결하여 암호 변경 내용이 적용되고 메서드가 호출될 때 ValidateUser 사용할 수 있도록 합니다.

이 연결 문자열은 ADAM을 사용할 때 허용되지 않으며 을 throw합니다 NotSupportedException.
<LDAP:// domain 또는 server>:[port]/<container dn>

포트 번호는 ADAM의 경우 선택 사항이며 Active Directory에는 필요하지 않습니다.
공급자는 지정된 도메인 또는 서버에 대해 실행됩니다. 사용자 만들기 및 삭제는 지정된 컨테이너에서만 수행됩니다. 검색 방법을 비롯한 다른 모든 작업은 컨테이너에 루팅된 하위 트리 검색을 수행합니다.

ADAM 서버에 대 한 컨테이너 애플리케이션 파티션 또는 애플리케이션 파티션 내에서 컨테이너의 루트를 지정 합니다.

성능 향상을 위해 연결 문자열이 특정 컨테이너를 정의하는 것이 좋습니다.

인스턴스는 ActiveDirectoryMembershipProvider 디렉터리 특성을 속성에 ActiveDirectoryMembershipUser 매핑합니다. Web.config 파일에서 특성 매핑이 수행되지 않은 경우 기본 특성이 사용됩니다. 특성 매핑에 대한 자세한 내용은 클래스 설명서의 개별 속성을 ActiveDirectoryMembershipUser 참조하세요.

다음 표에서 ActiveDirectoryMembershipUser 속성 및 해당 기본 특성 매핑.

중요

클래스는 ActiveDirectoryMembershipProvider 공급자 특성이 디렉터리에 있는 사용자 개체의 핵심 특성에 매핑되지 않는지 명시적으로 확인하지 않습니다. 매핑된 특성을 통해 디렉터리의 중요한 정보가 노출되지 않도록 해야 합니다.

속성 기본 디렉터리 특성 매핑할 수 있습니다.
ProviderUserKey securityIdentifier No
UserName userPrincipalName 예, 하지만 userPrincipalName 또는 sAMAccountName 여야 합니다
Comment 주석 No
CreationDate whenCreated No
Email mail 예, 하지만 유니코드 문자열 형식의 단일 값 특성 이어야 합니다.
LastActivityDate 해당 없음 지원 되지 않습니다 ActiveDirectoryMembershipProvider합니다.
LastLoginDate 해당 없음 지원 되지 않습니다 ActiveDirectoryMembershipProvider합니다.
LastPasswordChangedDate pwdLastSet No
PasswordQuestion 없음 예, 하지만 유니코드 문자열 형식의 단일 값 특성 이어야 합니다.
IsApproved User-Account-Control(AD)

mDS-UserAccountDisabled(ADAM)
No
IsLockedOut lockoutTime 및 AD 잠금 기간(Windows 2000의 AD)에서 계산됨

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

msDS-User-Account-Control-Computed(ADAM)
No
LastLockoutDate 너무 많은 잘못된 암호 시도로 인해 사용자가 잠겨 있으면 잠금 시간 특성이 반환됩니다.

너무 많은 잘못된 암호 응답 시도로 인해 사용자가 잠겨 있으면 에서 정의 attributeMapFailedPasswordAnswerLockoutTime 한 특성에 저장된 값이 반환됩니다.

잘못된 암호와 너무 많은 잘못된 암호 시도로 인해 사용자가 잠겨 있으면 가장 최근의 날짜/시간 값이 반환됩니다.

계정이 잠겨 있지 않으면 SQL 호환성을 위해 1/1/1754를 반환합니다.
No

EnablePasswordReset 속성이 RequiresQuestionAndAnswer 모두 인 경우 클래스는 ActiveDirectoryMembershipProvidertrue사용자가 미리 정해진 질문에 답하도록 요구하여 암호 재설정 보안을 지원합니다. 질문 및 답변을 지원 하려면 다음 구성 특성을 사용 하 여 설정 해야 합니다는 add 요소 (ASP.NET 설정 스키마) 멤버 자격 공급자에 대 한 애플리케이션 구성 파일에서입니다.

구성 특성 특성 유형
attributeMapPasswordQuestion 유니코드 문자열 형식의 단일 값 특성이어야 합니다.
attributeMapPasswordAnswer 유니코드 문자열 형식의 단일 값 특성이어야 합니다.
attributeMapFailedPasswordAnswerCount Integer 형식의 단일 값 특성이어야 합니다.
attributeMapFailedPasswordAnswerTime 큰 정수/간격 형식의 단일 값 특성이어야 합니다.
attributeMapFailedPasswordAnswerLockoutTime 큰 정수/간격 형식의 단일 값 특성이어야 합니다.

암호 재설정 보안을 사용하는 방법에 대한 자세한 내용은 속성을 참조 RequiresQuestionAndAnswer 하세요.

Active Directory 연결

경우는 ActiveDirectoryMembershipProvider 클래스는 Active Directory 또는 Active Directory 애플리케이션 모드 (ADAM) 서버에 연결할 때 사용 합니다 connectionProtection 를 사용 하 여 설정 된 특성을 요소 (ASP.NET 설정 스키마) 멤버 자격 공급자에 대 한 추가 애플리케이션 구성 파일 작업의 종류를 제한할 수 있습니다는 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이 실패하면 Sign-and-seal을 사용하여 Active Directory에 연결하려는 두 번째 시도가 이루어집니다. 두 시도가 모두 실패하면 인스턴스는 ActiveDirectoryMembershipProvider 예외를 throw합니다 ProviderException .

프로세스 자격 증명과 명시적 자격 증명이 모두 지원됩니다.

다음 표에서는 ADAM 서버에 연결할 때 특성의 connectionProtection 효과를 보여줍니다.

connectionProtection 설정 효과
None 클래스는 ActiveDirectoryMembershipProvider 이 제한 사항으로 ADAM 서버에 연결됩니다.

- 안전하지 않은 연결을 통해 암호를 보내고 변경할 수 있도록 ADAM 서버를 명시적으로 구성하지 않으면 암호를 설정하는 모든 방법이 실패합니다.

프로세스 자격 증명과 명시적 자격 증명이 모두 지원됩니다.
Secure 클래스는 ActiveDirectoryMembershipProvider SSL을 사용하여 ADAM 서버에 연결을 시도합니다. 연결할 수 없는 경우 인스턴스는 ActiveDirectoryMembershipProvider 예외를 throw합니다 ProviderException .

프로세스 자격 증명과 명시적 자격 증명이 모두 지원됩니다.

ADAM 구성

ADAM 서버를 사용하는 경우 ADAM 인스턴스에는 클래스를 정의하는 User 스키마가 포함되어야 합니다. ADAM 설치 디렉터리에서 사용할 수 있는 파일의 MS-User.ldf LDIF 가져오기를 사용하여 클래스를 가져올 User 수 있습니다.

클래스는 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 예외를 throw합니다.

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)

적용 대상

추가 정보