Normalmente, para consultar o servidor OpenLDAP, estou usando a seguinte consulta
ldapsearch -x -H ldap://host -b dc=domain,dc=com uidNumber=4158
Mas recentemente vi outra maneira de consultar
ldapsearch -x -H ldap://host -b o=domain.com uidNumber=4158
O que é esse formato "o=" e como devo configurar meu servidor LDAP para usá-lo?
Obrigado!
É o formato original do OSI X.500 Directory que é muito anterior ao
dc=
. A estrutura original do Diretório deveria ser assim:...com a subárvore de cada país delegada a algum tipo de servidor de diretório nacional. O formato de nomenclatura não era baseado em DNS porque o próprio X.500 deveria se tornar o "DNS" da rede OSI, com todo o conjunto de protocolos OSI sendo um concorrente direto dos protocolos da Internet.
Em outras palavras, o
O
atributo identifica o nome de uma empresa ou outra organização, não um nome de domínio. (Embora nada impeça você de colocar um nome de domínio lá, mas não é exatamente para isso que serve.)Hoje raramente é usado no LDAP devido à influência do Active Directory (fazendo com que todos pensem
dc
que é a única maneira), mas você ainda pode ver[blah], O=Foo, C=US
nos certificados TLS – e ainda mais nos certificados S/MIME – já que seu formato X.509 fazia parte diretamente do o sistema de diretório X.500 do qual o LDAP descende.Não há nenhuma configuração especial para o OpenLDAP usar este formato (além de ter este atributo no esquema) – você literalmente especifica
o=Widgets Inc.
como sufixo do seu banco de dados.Embora os exemplos originais tivessem um atributo de país ("o=Foo,c=XX"), no LDAP isso é totalmente opcional e você pode usar diretamente "o=Foo" como sufixo.
Depois de definir o banco de dados, o segundo passo geralmente é preenchê-lo com pelo menos o objeto de nível superior (usando slapadd ou ldapadd). Isso também funciona normalmente, exceto, é claro, que você precisa criá-lo em
objectClass: organization
vez de 'domínio'.Entretanto, essa decisão precisa ser tomada no momento da criação do banco de dados; alterar o sufixo do banco de dados posteriormente geralmente significa despejar e recarregar (slapcat, recreate,
sed
dump, slapadd).(Pode ser possível configurar um back-end 'proxy' que permita acessar o mesmo banco de dados por meio de dois sufixos diferentes, mas isso seria uma configuração manual. Não há tradução automática de "o=abc" para "dc=a,dc =b,dc=c".)