ActiveDirectoryMembershipProvider 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
- 상속
예제
다음 코드 예제에서는 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>
clientSearchTimeout
및 serverSearchTimeout
기본값은 분입니다. 단위를 변경하려면 특성 값을 "Days", "Hours", "Minutes", "Seconds" 또는 "Milliseconds" 중 하나로 설정합니다 timeoutUnit
. 특성을 지정하지 않으면 기본값은 "분"입니다.
설명
이 클래스에서 사용 되는 Membership 및 MembershipUser 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 |
예, 하지만 유니코드 문자열 형식의 단일 값 특성 이어야 합니다. | ||
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 데이터 저장소에서 사용자 암호를 검색할 수 있는지 여부를 나타내는 값을 가져옵니다. 이 속성은 항상 |
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) |
적용 대상
추가 정보
.NET