Procura LDAP para um usuário com um endereço IP específico

2

Estou fazendo a autenticação de passagem em um servidor Novell eDirectory. Atualmente, realizo a seguinte solicitação:

results = server.search_s(
    self.basedn,
    ldap.SCOPE_SUBTREE,
    '(objectClass=user)',
    attrlist=['uid', 'networkAddress'])

(Isto é em python, deixe-me saber se você quer que eu explique isso.)

O problema com este método é que cada consulta retorna todos os usuários no servidor, que eu então tenho que percorrer para encontrar o usuário no qual estou interessado. Eu coloco em cache, mas o que eu realmente gostaria de fazer é algo assim:

results = server.search_s(
    self.basedn,
    ldap.SCOPE_SUBTREE,
    '(&(objectClass=user)(networkAddress=#9#\x00\x00\xc0\xa8\n\x1e))')

(Esse material de #9# é como o IP é armazenado - na verdade é 192.168.10.30)

Quando eu faço uma consulta por networkAddress , recebo um erro 'Invalid Syntax' (mesmo se eu fizer algo como networkAddress=blah , sem todos os \ 's).

Existe uma maneira de fazer uma consulta LDAP para um IP específico?

    
por Harley 25.06.2009 / 03:09

3 respostas

2

O problema é que o endereço de rede está usando uma sintaxe de endereço de rede que é um atributo estruturado. Eu escrevi sobre os vários tipos de sintaxe nesses dois artigos:

link link

O # assina campos separados na visualização LDAP do atributo.

Eu estava olhando a referência de esquema para esses artigos no LogicSource for NDS, que era um documento de taxa.

A questão é qual é a comparação permitida nesse atributo.

Em um ponto lateral, se você consultou loginTime = *, isso mostraria aqueles que estão conectados no momento e reduziria o conjunto de usuários a percorrer.

Além disso, o networkAddress é de valor múltiplo.

    
por 25.06.2009 / 03:37
0

Assumo que o código que você está executando não tem um apóstrofo sem escape dentro da string?

    
por 25.06.2009 / 03:35
0

Parece que você tem uma citação única no lugar errado em seu filtro de pesquisa. Deveria ser:

results = server.search_s(
    self.basedn,
    ldap.SCOPE_SUBTREE,
    '(&(objectClass=user)(networkAddress=#9#\x00\x00\xc0\xa8\n\x1e))'
)
    
por 25.06.2009 / 03:38