Compartilhar via


Sintaxe do atributo ADSI

Cada atributo no diretório tem uma sintaxe associada. Por exemplo, inteiro, cadeia de caracteres, numérico e assim por diante. ADSI define sua própria sintaxe que mapeia para a sintaxe de diretório nativo. Esta seção descreve os tipos de sintaxes de atributo no ADSI.

Cadeia de caracteres de nome distinto

Syntax Type: ADSTYPE_DN_STRING

O nome distinto é útil para vincular dois objetos juntos. Por exemplo, ele pode criar um link que torna o objeto Alice um gerenciador do objeto Bob. Se o objeto Alice se mover para um lugar diferente, o link do gerenciador entre Alice e Bob será atualizado automaticamente.

O nome distinto deve conter um objeto de nome distinto válido. Se o nome distinto não corresponder a um objeto existente válido, a maioria dos servidores rejeitará a solicitação e retornará um erro de violação de restrição.

Exemplos:

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 );

Cadeia de caracteres exata de maiúsculas e minúsculas e minúsculas

Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.

A Cadeia de Caracteres Exata de Maiúsculas e minúsculas é uma cadeia de caracteres que diferencia maiúsculas de minúsculas. Uma grande porcentagem de atributos no diretório usa essa sintaxe.

Observação

O diretório pode ou não armazenar isso como uma cadeia de caracteres Unicode. No entanto, ADSI aceita e retorna cadeias de caracteres Unicode.

 

Exemplo:

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

String imprimível

Syntax Type: ADSTYPE_PRINTABLE_STRING

Essa sintaxe é usada para atributos com valores de cadeia de caracteres em que maiúsculas e minúsculas são consideradas desiguais para comparações, por exemplo, "FABRIKAM" e "Fabrikam" não coincidem. ADSI aceita qualquer conteúdo para uma cadeia de caracteres imprimível; ele não tenta verificar se eles são realmente imprimíveis.

Cadeia numérica

Syntax Type: ADSTYPE_NUMERIC_STRING

Nessa sintaxe, as cadeias de caracteres correspondem como em Cadeia de caracteres imprimível, exceto que todos os caracteres de espaço são ignorados nas comparações. ADSI não executa a verificação de valor para garantir que apenas numerais e espaços apareçam em valores dessa sintaxe. O Active Directory aceita qualquer conteúdo para uma cadeia de caracteres numérica; ele não verifica se os caracteres são numéricos.

Hora UTC

Syntax Type: ADSTYPE_UTC_TIME

Essa sintaxe armazena a data e a hora em uma única cadeia de caracteres. O formato de cadeia de caracteres consiste em três partes concatenadas: (1) AAMMDD; (2) HHMM ou HHMMSS (ambos são aceitáveis); e (3) "Z" para indicar que o tempo dado é Greenwich Mean Time (GMT), ou "+/-HHMM" para indicar que o tempo dado é o horário local com o diferencial dado do GMT. O diferencial é baseado na fórmula: GMT=Local+diferencial.

Observação

Os dois primeiros dígitos do ano não são armazenados nessa cadeia de caracteres.

 

Alguns exemplos de valores legais são "9101311455Z", "910131145503Z", "9101314455-0500", "910131145503+0130". Essa cadeia de caracteres é armazenada como caracteres ASCII de byte único e nenhum número de página de código é armazenado com ela.

Embora a ordenação seja suportada, ela é feita apenas como uma classificação de cadeia de caracteres ASCII sem diferenciação de maiúsculas e minúsculas, não interpretando corretamente o significado das cadeias de caracteres.

Qualquer valor de cadeia de caracteres válido é aceito. Nenhuma tentativa é feita para garantir que a cadeia de caracteres contenha uma cadeia de caracteres de tempo válida.

Tempo Generalizado

Syntax Type: ADSTYPE_UTC_TIME

Se um novo atributo para armazenar valores de tempo estiver sendo definido, a sintaxe GeneralizedTime deverá ser usada. A sintaxe GeneralizedTime usa quatro caracteres para representar o ano em vez de dois, como no UTCTime.

O formato para a sintaxe GeneralizedTime é "YYYYMMDDHHMMSS.0Z". Um exemplo de um valor aceitável é "20010928060000.0Z". O "Z" não indica diferencial de tempo. O Active Directory armazena data/hora como GMT (Greenwich Mean Time). Se nenhum diferencial de tempo for especificado, GMT será o padrão.

Se a hora for especificada em um fuso horário diferente de GMT, o diferencial entre o fuso horário e GMT será acrescentado à cadeia de caracteres em vez de "Z" na forma "YYYYMMDDHHMMSS.0[+/-]HHMM". Um exemplo de um valor aceitável é "20010928060000.0+0200".

O diferencial é baseado na fórmula: GMT=Local+diferencial.

Booliano

Syntax Type: ADSTYPE_BOOLEAN

O Active Directory aceita apenas um valor de 32 bits assinado para essa sintaxe. Ele manipula zero como FALSE e todos os valores diferentes de zero como TRUE.

Inteiro

Syntax Type: ADSTYPE_INTEGER

Um valor numérico assinado de 32 bits.

Inteiro Grande

Syntax Type: ADSTYPE_LARGE_INTEGER

Um valor numérico assinado de 64 bits. Inteiros grandes são realmente implementados como objetos COM na interface IADsLargeInteger. Os métodos HighPart e LowPart são usados para acessar as duas metades de 32 bits do valor inteiro grande.

Exemplo:

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

Cadeia de Octeto

Syntax Type: ADSTYPE_OCTET_STRING

Uma cadeia de caracteres de octeto é retornada como uma matriz variante de bytes. Este consiste em uma contagem de tamanho (número de octetos) seguida por uma série de octetos. Um octeto é um byte de 8 bits, portanto, uma série de octetos é uma cadeia de dados binários.

Classe de Objeto

Syntax Type: ADSTYPE_CASE_IGNORE_STRING

Classe de objeto é um identificador de objeto exclusivo para uma determinada classe de esquema. A classe de cada instância de objeto é identificada pelo atributo objectClass . Quando criado, você nunca pode alterar uma classe de objeto. objectClass é um atributo de valor múltiplo. Ele lista a classe específica do objeto e as classes de todas as classes estruturais ou abstratas das quais a classe específica foi derivada. Isso inclui Top, a classe da qual todas as outras classes são derivadas. O Active Directory não lista classes auxiliares no atributo objectClass .

Descritor de Segurança

Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR

Os direitos de acesso definem quais habilidades uma entidade de segurança tem quando tenta executar uma operação em um objeto do Active Directory. Um descritor de segurança descreve as informações de controle de acesso associadas a um objeto.

O descritor de segurança é armazenado como uma propriedade de um objeto de diretório na propriedade nTSecurityDescriptor . Quando um usuário autenticado tenta acessar um objeto de diretório, o servidor de diretório determina o acesso concedido ou negado ao usuário com base no descritor de segurança do objeto.

A enumeração ADS_SD_CONTROL_ENUM especifica sinalizadores de controle para um descritor de segurança.

O exemplo de código a seguir mostra como obter um descritor de segurança.

' 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

Sinônimos para atributos do Active Directory

Escolhendo uma sintaxe

Como especificar valores de comparação