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. O ADSI define sua própria sintaxe que mapeia para a sintaxe do diretório nativo. Esta seção descreve os tipos de sintaxes de atributo no ADSI.
Cadeia de caracteres de nome diferenciada
Syntax Type: ADSTYPE_DN_STRING
O nome diferenciado é útil para vincular dois objetos. Por exemplo, ele pode criar um link que torna o objeto Alice um gerente do objeto Bob. Se o objeto Alice for movido para um lugar diferente, o vínculo do gerente entre Alice e Bob será atualizado automaticamente.
O nome diferenciado deve conter um objeto de nome diferenciado válido. Se o nome diferenciado 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 ignora cadeia de caracteres
Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.
Case Exact String é uma cadeia de caracteres que diferencia maiúsculas de minúsculas, enquanto Case Ignore String é uma cadeia de caracteres que não diferencia maiúsculas de minúsculas. Uma grande porcentagem de atributos no diretório usa essa sintaxe.
Nota
O diretório pode ou não armazená-lo 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
Cadeia de caracteres 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 diferentes para comparações, por exemplo, "FABRIKAM" e "Fabrikam" não correspondem. 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 de caracteres numérica
Syntax Type: ADSTYPE_NUMERIC_STRING
Nessa sintaxe, as cadeias de caracteres correspondem como na Cadeia de Caracteres Imprimível, exceto que todos os caracteres de espaço são ignorados em comparações. O 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) YYMMDD; (2) HHMM ou HHMMSS (ambos são aceitáveis); e (3) "Z" para indicar que a hora fornecida é Gmt (Horário Médio de Greenwich) ou "+/-HHMM" para indicar que a hora fornecida é hora local com o diferencial especificado de GMT. O diferencial é baseado na fórmula: GMT=Local+diferencial.
Nota
Os dois primeiros dígitos do ano não são armazenados nesta cadeia de caracteres.
Alguns exemplos de valores legais são "9101311455Z", "91013114503Z", "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 tenha suporte, ela é feita apenas como uma classificação de cadeia de caracteres que não diferencia maiúsculas de minúsculas asCII, 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 com UTCTime.
O formato da 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 (Horário Médio de Greenwich). Se nenhum diferencial de hora 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 o GMT será acrescentado à cadeia de caracteres em vez de "Z" no formato "YYYYMMDDHHMMSS.0[+/-]HHMM". Um exemplo de um valor aceitável é "20010928060000.0+0200".
O diferencial é baseado na fórmula: GMT=Local+diferencial.
Booleano
Syntax Type: ADSTYPE_BOOLEAN
O Active Directory aceita apenas um valor assinado de 32 bits para essa sintaxe. Ele manipula zero como FALSE e todos os valores não zero como VERDADEIRO.
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 interfaceIADsLargeInteger. 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 caracteres octeto
Syntax Type: ADSTYPE_OCTET_STRING
Uma cadeia de caracteres de octeto é retornada como uma matriz variante de bytes. Isso 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 caracteres de dados binários.
Classe object
Syntax Type: ADSTYPE_CASE_IGNORE_STRING
A 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 com vários valores. 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
Tópicos relacionados
-
sintaxes para atributos do Active Directory
-
escolhendo um de sintaxe