Violação de classe de objeto LDAP: atributo ou não permitido no sufixo?

2

Estou prestes a configurar um diretório LDAP. Ele é usado como uma ferramenta para comunicar permissões de usuário de um aplicativo Web ao acesso ao sistema de arquivos WebDav, por exemplo, Adicionar um usuário à plataforma web deve permitir o login no sistema de arquivos com as mesmas credenciais. Não há outros usos pretendidos. Seguindo este tutorial em alemão que incentiva o uso dos atributos c , o , ou etc. acima de dc , configurei o seguinte sufixo e root:

suffix                "ou=webtool,o=myOrg,c=de"
rootdn                "cn=ldapadmin,ou=webtool,o=myOrg,c=de"

O servidor é iniciado e eu posso me conectar a ele por Administrador do LDAP , que informa “erro LDAP: objeto não tem”. Bem, ainda não há objetos.

Agora quero criar os elementos raiz e admin do shell. Eu criei um arquivo init.ldif :

dn: ou=webtool,o=myOrg,c=de
objectclass: dcObject
objectclass: organization
dc: webtool
o: webtool

dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin

Tentando carregar o arquivo é executado em um erro, dizendo-me que ou não é permitido:

server:~ # ldapadd -x -D "cn=ldapadmin,ou=webtool,o=myOrg,c=de" -W -f init.ldif
Enter LDAP Password:
adding new entry "ou=webtool,o=myOrg,c=de"
ldap_add: Object class violation (65)
        additional info: attribute 'ou' not allowed

Eu não estou usando ou em qualquer lugar, exceto no sufixo, então a pergunta: não é permitido aqui? O que é permitido aqui?

    
por Paramaeleon 30.11.2012 / 11:05

1 resposta

1

Existem inúmeras dependências para a criação de elementos, e as mensagens de erro são bastante confusas, se você não conhece o conceito. O objectclass não é necessariamente dcObject para o nó raiz dos bancos de dados, já que é provável que você adivinhe quando ler vários tutoriais. Em vez disso, ele deve corresponder ao tipo do objeto: aqui, para um nome que comece com ou= , ele deve ser organizationalUnit . Eu encontrei esta informação em estas tabelas . Mais adiante, a classe de objeto determina quais propriedades devem e podem ser incluídas no registro. Aqui, organizationalUnit deve ter uma entrada ou: e não deve ter nem dc: nem o: entradas. Assim, o arquivo init.ldif saudável se parece com isso:

dn: ou=webtool,o=myOrg,c=de
objectclass: organizationalUnit
ou: LDAP server for my webtool

dn: cn=ldapadmin,ou=webtool,o=myOrg,c=de
objectclass: organizationalRole
cn: ldapadmin

Nota: A página também diz: “Enquanto muitos objectClasses não mostram nenhum atributo MUST você deve (ouch) seguir qualquer hierarquia […] para determinar se este é realmente o caso.” Eu pensei que isso significaria que meu registro de raiz teria que forneça os campos obrigatórios para c= e o= ( c: e o: , respectivamente), mas isso não é o caso.

    
por 04.12.2012 / 08:28

Tags