Por diversas razões, eu me tornei o administrador LDAP defacto no meu local de trabalho. Eu tenho aprendido isso no trabalho há cerca de um ano. Então, ao descrever as coisas, sinta-se à vontade para sugerir melhores maneiras de fazer as coisas.
Eu tenho um Novell eDirectory no qual estou armazenando informações de funcionários. O principal uso é a autenticação de vários serviços da Web, como o Moodle ou o Drupal. Mas também estou usando isso como backend para um novo Diretório de Funcionários. Eu não vi nenhum ponto em duplicar os dados mais do que já estava sendo duplicado. Além disso, um diretório de funcionários parece exatamente o tipo de coisa que o LDAP foi feito.
Eu criei entradas para cada escritório e, em seguida, configurei um atributo em cada usuário que referencia o dn da entrada do escritório para o escritório. O problema que tenho agora é que cada escritório provavelmente tem seu próprio número de telefone. Assim, os funcionários que têm mais de um escritório (se trabalham em mais de um campus, por exemplo) têm mais de um número de telefone. Como os números de telefone seguem o funcionário, não posso simplesmente atribuir o número à entrada do escritório. Então, eu preciso de uma maneira de dizer: "esse número de telefone é para esse escritório".
Se este fosse um banco de dados MySQL, eu criaria uma tabela que mapeasse as coisas como eu quisesse.
Existe uma estrutura semelhante que eu poderia usar no LDAP? Ou método que é equivalente?
Para dar um exemplo detalhado do que estou falando, aqui está um pseudo-ldif de uma entrada de funcionário:
dn: cn=user,ou=staff,dc=college,dc=edu
officedn: cn=DC107,ou=locations,dc=college,dc=edu
officedn: cn=MAIN222,ou=locations,dc=college,dc=edu
phone: 555-555-5555
phone: 111-111-1111
departmentdn: cn=it,ou=departments,ou=groups,dc=college,dc=edu
departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu
title: web systems admin
title: professor of discrete math
Então, como eu me relacionaria:
officedn: cn=DC107,ou=locations,dc=college,dc=edu
para phone: 555-555-5555
?
Ou officedn: cn=MAIN222,ou=locations,dc=college,dc=edu
a phone: 111-111-1111
?
Ou departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu
a title: professor of discrete math
?
E assim por diante ...
Algumas notas, caso sejam relevantes:
Eu criei atributos personalizados para os dn's de escritório e departamento usando a sintaxe DN 1.3.6.1.4.1.1466.115.121.1.12.
As entradas do departamento têm o objectClasses groupOfNames, nestedGroupAux e Top.
Escritórios têm o objectClasses: Um objectClass personalizado contendo a referência dn personalizada à entrada do campus, ndsLoginProperties, organizationalPerson, Person e Top.
As entradas do usuário são iguais às dos escritórios, além da posixAccount.
Existe alguma outra informação que eu deva fornecer?
Editar para resolver problemas que os comentários são muito curtos para:
Se eu criar outra entrada contendo as metainformações, conforme descrito no link , precisarei criar uma meta-entrada por número de telefone e por cargo.
dn: cn=MAIN222,cn=user,ou=staff,dc=college,dc=edu
officedn: cn=MAIN222,ou=locations,dc=college,dc=edu
phone: 111-111-1111
departmentdn: cn=math,ou=departments,ou=groups,dc=college,dc=edu
title: professor of discrete math
departmentdn: cn=it,ou=departments,ou=groups,dc=college,dc=edu
title: web systems admin
Não funcionaria porque não há como um computador descobrir que o administrador de sistemas web não combina com matemática, mas concorda.
Antes de publicar a pergunta, o método que pensei foi algo como criar um ou para todos os metadados: ou=metadata,dc=college,dc=edu
Então, um ou para cada usuário: ou=userid,ou=metadata,dc=college,dc=edu
Em seguida, uma entrada por cargo e número de telefone que os vinculou aos seus departamentos e escritórios:
'' '
dn: cn = jobtitle, ou = ID do usuário, ou = metadados, dc = faculdade, dc = edu
officedn: cn = DC107, ou = localizações, dc = faculdade, dc = edu
telefone: 555-555-5555
dn: cn = número de telefone, ou = ID do usuário, ou = metadados, dc = faculdade, dc = edu
officedn: cn = MAIN222, ou = localizações, dc = faculdade, dc = edu
telefone: 111-111-1111
'' '
Eu estava esperando que houvesse uma maneira mais limpa do que isso para realizar o que eu quero.