Eu tenho um aplicativo da web de terceiros que está executando uma consulta LDAP para descobrir se o endereço de email de um usuário existe no AD. A consulta fica assim:
(&(objectClass=user)(proxyAddresses=SMTP:[email protected]))
Meu proxyAddresses
valor de atributo no AD se parece com isso:
X500:/o=foo/ou=foo Group (ABC123)/cn=Foo3/cn=foouser (blah)123; SIP:[email protected]; smtp:[email protected]; smtp:[email protected]; SMTP:[email protected]
O aplicativo da web está recebendo resultados vazios de volta. Vejo um resultado semelhante quando verifico com o AD Explorer. Além disso, quando olho para a saída bruta no AD Explorer, ele coloca todo o valor do atributo em uma única linha, em vez de mostrar cada entrada SMTP e X500 em uma linha separada.
Tudo isso me faz pensar que o valor pode não estar delimitado adequadamente.
Quando comparei o atributo com outro ambiente, o outro ambiente não tinha espaços entre os valores.
Por exemplo... o meu:
X500:/o=foo/ou=foo Group (ABC123)/cn=Foo3/cn=foouser (blah)123; SIP:[email protected]; smtp:[email protected]; smtp:[email protected]; SMTP:[email protected]
O outro ambiente:
X500:/o=foo/ou=foo Group (ABC123)/cn=Foo3/cn=foouser (blah)123;SIP:[email protected];smtp:[email protected];smtp:[email protected];SMTP:[email protected]
Então minha pergunta é:
Os pontos e vírgulas COM espaços são permitidos como um delimitador para um valor de atributo Active Directory DirectoryString?
Eu acho que não existe um delimitador ou separador para atributos multivalorados.
Se você importar ou exportar dados usando arquivos ldif, o formato ficará assim:
E se eu consultar minha conta usando a ferramenta dsquery padrão, recebo esse formato também
Usar o ldapsearch de um host linux me dá o mesmo formato ldif. Então, meu palpite é que o aplicativo não está analisando o resultado do filtro corretamente, ele deve estar percorrendo a lista de valores retornada. Se isso não acontecer, então me parece que há um bug no código deles.
De acordo com o msdn , o atributo Proxy-Addresses não tem valor único e sua sintaxe é string unicode . Além disso, msdn tem uma pequena entrada sobre as diferenças entre atributos de valor único e multivalor msdn , mas não diz nada sobre delimitadores ou formatos (apenas que as entradas não podem estar vazias).
Do ponto de vista da consulta, o delimitador é apenas uma opção de exibição cosmética para apresentar os dados. Ferramentas diferentes exibirão os vários valores de maneiras diferentes. Certifique-se de estar usando a mesma versão da mesma ferramenta em ambos os ambientes.
A
attributes
guia emDSA.MSC
usa ponto e vírgula com espaços, mas abra esse atributo para editar com DSA e você obterá uma lista com cada atributo em uma nova linha. Alguns outros métodos que você pode consultar e exibir:CSVDE
irá gerar um arquivo que usa ponto e vírgula.Get-Aduser
usará "," na consulta geral, mas usará novas linhas quando você expandir o atributo.O usuário é encontrado quando você executa a mesma consulta?
get-aduser -ldapfilter "(&(objectClass=user)(proxyAddresses=SMTP:[email protected]))"