Sintaxe do atributo ADSI
Cada atributo no diretório tem uma sintaxe associada. Por exemplo, inteiro, string, numérico e assim por diante. ADSI define sua própria sintaxe que mapeia para a sintaxe do diretório nativo. Esta seção descreve os tipos de sintaxes de atributos no ADSI.
Cadeia de caracteres de nome distinto
Syntax Type: ADSTYPE_DN_STRING
O nome distinto é útil para vincular dois objetos. 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 rejeita a solicitação e retorna 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 );
String exata de maiúsculas e minúsculas e String de ignoramento de maiúsculas e minúsculas
Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.
Case Exact String é uma string que diferencia maiúsculas de minúsculas, enquanto Case Ignore String é uma string que não 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 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
Corda 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 Printable-String; 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 Printable String, exceto que todos os caracteres de espaço são ignorados em comparações. O ADSI não executa a verificação de valores para garantir que apenas numerais e espaços apareçam em valores dessa sintaxe. O Ative 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 da 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 a hora dada é a Hora Média de Greenwich (GMT), ou "+/-HHMM" para indicar que a hora dada é a hora local com o diferencial dado do GMT. O diferencial baseia-se na fórmula: GMT=Local+diferencial.
Observação
Os dois primeiros dígitos do ano não são armazenados nesta 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 que não diferencia maiúsculas de 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 acontece com UTCTime.
O formato para a sintaxe GeneralizedTime é "YYYYMMDDHHMMSS.0Z". Um exemplo de um valor aceitável é "20010928060000.0Z". O "Z" indica que não há diferença de tempo. O Ative Directory armazena data/hora como Hora Média de Greenwich (GMT). Se nenhum diferencial de tempo for especificado, GMT é 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 é acrescentado à string em vez de "Z" na forma "YYYYMMDDHHMMSS.0[+/-]HHMM". Um exemplo de um valor aceitável é "20010928060000.0+0200".
O diferencial baseia-se na fórmula: GMT=Local+diferencial.
Booleano
Syntax Type: ADSTYPE_BOOLEAN
O Ative Directory aceita apenas um valor assinado de 32 bits para essa sintaxe. Ele lida com 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 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
Corda de Octeto
Syntax Type: ADSTYPE_OCTET_STRING
Uma cadeia de caracteres de octeto é retornada como uma matriz variante de bytes. Esta consiste numa contagem de tamanhos (número de octetos) seguida de 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
Object Class é 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 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 Ative 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 Ative 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