ADSI 특성 구문
디렉터리의 각 특성에는 연결된 구문이 있습니다. 예를 들어 정수, 문자열, 숫자 등이 있습니다. ADSI는 네이티브 디렉터리 구문에 매핑되는 고유한 구문을 정의합니다. 이 섹션에서는 ADSI의 특성 구문 유형에 대해 설명합니다.
고유 이름 문자열
Syntax Type: ADSTYPE_DN_STRING
고유 이름은 두 개체를 함께 연결하는 데 유용합니다. 예를 들어 Alice 개체를 Bob 개체의 관리자로 만드는 링크를 만들 수 있습니다. Alice 개체가 다른 위치로 이동하면 Alice와 Bob 사이의 관리자 링크가 자동으로 업데이트됩니다.
고유 이름에는 유효한 고유 이름 개체가 포함되어야 합니다. 고유 이름이 유효한 기존 개체에 해당하지 않는 경우 대부분의 서버는 요청을 거부하고 제약 조건 위반 오류를 반환합니다.
예:
Set x = GetObject("LDAP://CN=Bob, OU=Sales,DC=Fabrikam, DC=com)
x.Put "manager", "CN=Alice, OU=Sales, DC=Fabrikam, DC=COM"
x.SetInfo
PADS_ATTR_INFO pInfo;
// .. IDirectoryObject::GetObjectAttribute
printf("%S\n", pInfo->pADsValues->DNString );
대/소문자 정확한 문자열 및 대/소문자 무시 문자열
Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.
Case Exact String은 대/소문자를 구분하는 문자열이고 대/소문자 무시 문자열은 대/소문자를 구분하지 않는 문자열입니다. 디렉터리의 많은 특성이 이 구문을 사용합니다.
참고
디렉터리가 이를 유니코드 문자열로 저장하거나 저장할 수 없습니다. 그러나 ADSI는 유니코드 문자열을 수락하고 반환합니다.
예제:
Dim propList As IADsPropertyList
Set propList = GetObject("LDAP://DC=Fabrikam,DC=com")
Set propVal = New PropertyValue
' --- Property Value ---
propVal.CaseIgnoreString = "Fabrikam, Inc - Seattle, WA"
propVal.ADsType = ADSTYPE_CASE_IGNORE_STRING
인쇄 가능한 문자열
Syntax Type: ADSTYPE_PRINTABLE_STRING
이 구문은 "FABRIKAM" 및 "Fabrikam"이 일치하지 않는 경우와 같이 대문자와 소문자를 비교할 때 같지 않은 것으로 간주되는 문자열 값이 있는 특성에 사용됩니다. ADSI는 Printable-String에 대한 모든 콘텐츠를 허용합니다. 실제로 인쇄할 수 있는지 확인하려고 시도하지 않습니다.
숫자 문자열
Syntax Type: ADSTYPE_NUMERIC_STRING
이 구문에서 문자열은 모든 공백 문자가 비교에서 무시된다는 점을 제외하고 인쇄 가능한 문자열과 일치합니다. ADSI는 숫자와 공백만 이 구문의 값에 표시되는지 확인하기 위해 값 검사를 수행하지 않습니다. Active Directory는 숫자 문자열에 대한 모든 콘텐츠를 허용합니다. 문자가 숫자인지는 확인하지 않습니다.
UTC 시간
Syntax Type: ADSTYPE_UTC_TIME
이 구문은 날짜와 시간을 단일 문자열에 저장합니다. 문자열 형식은 세 개의 연결된 부분으로 구성됩니다. (1) YYMMDD; (2) HHMM 또는 HHMMSS(둘 다 허용됨); 및 (3) 지정된 시간이 GMT(그리니치 표준시) 또는 "+/-HHMM"임을 나타내는 "Z"는 지정된 시간이 GMT와 지정된 차등을 가진 현지 시간임을 나타냅니다. 차등은 GMT=Local+차등 수식을 기반으로합니다.
참고
연도의 처음 두 자리는 이 문자열에 저장되지 않습니다.
법적 값의 몇 가지 예는 "9101311455Z", "910131145503Z", "91013144555-0500", "910131145503+0130"입니다. 이 문자열은 단일 바이트 ASCII 문자로 저장되며 코드 페이지 번호는 함께 저장되지 않습니다.
순서 지정이 지원되지만 문자열의 의미를 제대로 해석하지 않고 ASCII 대/소문자를 구분하지 않는 문자열 정렬로만 수행됩니다.
유효한 문자열 값이 허용됩니다. 문자열에 유효한 시간 문자열이 포함되어 있는지 확인하려고 시도하지 않습니다.
일반화된 시간
Syntax Type: ADSTYPE_UTC_TIME
시간 값을 저장하는 새 특성이 정의되는 경우 GeneralizedTime 구문을 사용해야 합니다. GeneralizedTime 구문은 UTCTime과 같이 2개가 아닌 연도를 나타내는 4개의 문자를 사용합니다.
GeneralizedTime 구문의 형식은 "YYYYMMDDHHMMSS.0Z"입니다. 허용되는 값의 예는 "20010928060000.0Z"입니다. "Z"는 시간 차등을 나타내지 않습니다. Active Directory는 날짜/시간을 그리니치 표준시(GMT)로 저장합니다. 시간 차등을 지정하지 않으면 GMT가 기본값입니다.
시간이 GMT 이외의 표준 시간대에 지정된 경우 표준 시간대와 GMT 간의 차등은 "YYYYMMDDHHMMSS.0[+/-]HHMM" 형식의 "Z" 대신 문자열에 추가됩니다. 허용되는 값의 예는 "20010928060000.0+0200"입니다.
차등은 GMT=Local+차등 수식을 기반으로합니다.
부울
Syntax Type: ADSTYPE_BOOLEAN
Active Directory는 이 구문에 대해 서명된 32비트 값만 허용합니다. 0을 FALSE 로 처리하고 모든 0이 아닌 값을 TRUE로 처리 합니다.
정수
Syntax Type: ADSTYPE_INTEGER
32비트 부호 있는 숫자 값입니다.
큰 정수
Syntax Type: ADSTYPE_LARGE_INTEGER
64비트 부호 있는 숫자 값입니다. 큰 정수는 실제로 IADsLargeInteger 인터페이스에서 COM 개체로 구현됩니다. HighPart 및 LowPart 메서드는 큰 정수 값의 두 32비트 절반에 액세스하는 데 사용됩니다.
예제:
Dim x as IADsLargeInteger
Set o = GetObject("LDAP://DC=Fabrikam,DC=com")
Set x = o.Get("UsnCreated")
Debug.Print x.HighPart
Debug.Print x.LowPart
Octet String
Syntax Type: ADSTYPE_OCTET_STRING
8진수 문자열은 바이트의 변형 배열로 반환됩니다. 크기 수(옥텟 수)와 일련의 8진수로 구성됩니다. 옥텟은 8비트 바이트이므로 일련의 옥텟은 이진 데이터의 문자열입니다.
개체 클래스
Syntax Type: ADSTYPE_CASE_IGNORE_STRING
개체 클래스는 지정된 스키마 클래스에 대한 고유한 개체 식별자입니다. 각 개체 instance 클래스는 objectClass 특성으로 식별됩니다. 만들 때는 개체 클래스를 변경할 수 없습니다. objectClass 는 여러 값 특성입니다. 개체의 특정 클래스와 특정 클래스가 파생된 모든 구조적 또는 추상 클래스의 클래스를 나열합니다. 여기에는 다른 모든 클래스가 궁극적으로 파생되는 클래스인 Top이 포함됩니다. Active Directory는 objectClass 특성의 보조 클래스를 나열하지 않습니다.
보안 설명자
Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR
액세스 권한은 Active Directory 개체에 대한 작업을 수행하려고 할 때 보안 주체가 가진 기능을 정의합니다. 보안 설명자는 개체와 연결된 액세스 제어 정보를 설명합니다.
보안 설명자는 nTSecurityDescriptor 속성에 있는 디렉터리 개체의 속성으로 저장됩니다. 인증된 사용자가 디렉터리 개체에 액세스하려고 하면 디렉터리 서버는 개체 보안 설명자에 따라 사용자에게 부여되거나 거부된 액세스를 결정합니다.
ADS_SD_CONTROL_ENUM 열거형은 보안 설명자에 대한 컨트롤 플래그를 지정합니다.
다음 코드 예제에서는 보안 설명자를 가져오는 방법을 보여줍니다.
' Obtain a security descriptor.
Dim x as IADs
Dim sd as IADsSecurityDescriptor
Dim acl as IADsAccessControlList
Set x = GetObject("LDAP://DC=Fabrikam, DC=com")
Set sd = x.Get("nTSecurityDescriptor")
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
Set acl = sd.DiscretionaryAcl
Set sacl = sd.SystemAcl
관련 항목