Newsgroup: it.comp.os.linux.software
Titolo: ldap non ci ho capito una mazza.

Sto usando ldap per la gestione degli account di posta.
Come objectclass ho messo:
top
person
organizationalPerson
inetOrgPerson
posixAccount
authorizedServiceObject.
Ci sono tutti gli attributi che mi servono ed anche molti di piu'.
Ora pero' mi servirebbe un atributo dove inserire un ruolo per ciascun
utente per l'autenticazine verso un altro tipo di servizio.
Ho visto che esiste l'attributo occupantRole dell'objectclass
organizationalRole.
Cosi' ho tentato di aggiungere tale objectclass ma mi dice:
Object class violation
additional error: invalid structural object class chain
(inetOrgPerson/organizationalRole).
Significa che organizationalRole non lo posso aggiungere e di conseguenza
non posso utilizzare l'attributo che mi serve?
 

 non posso utilizzare l'attributo che mi serve?
Premessa: una persona (organizationalPerson) non č un ruolo 
(organizationalRole), per cui quella classe non farebbe al caso tuo.
Per fare un esempio: un presidente non č anche l'ufficio della presidenza.
Tant'č vero che occupantRole ha la sintassi di distinguishedName (ovvero 
lo puoi usare solo per specificarci i DN di altri nodi che rappresentino 
le persone che al momento ricoprono quel ruolo).
Prova a spulciare qui:
 
http://ldap.akbkhome.com/index.php/objectclass.html
per vedere se trovi qualcosa di piů adeguato a quello che ti serve.
Detto ciň: un nodo puň avere un solo objectClass di classe STRUCTURAL.
sia organizationalPerson che organizationalRole sono STRUCTURAL, e 
quindi non le puoi usare direttamente insieme.
Se proprio volessi avere gli attributi di entrambe, devi farti a mano 
una classe che derivi da entrambe.
Guarda qui:
 
http://www.openldap.org/faq/data/cache/883.html
 
http://www.openldap.org/lists/openldap-software/200307/msg00267.html
-- 
  (\_/)   |   \    \  | ___|_   |_   |   /\/\  ianezz a casa sua... :-)
  (^.^)   |  _ \  | \ | _|     /    /   {^.^ } Verba volant, scripta
/(")(") _|_/  _\_|  _|____|____|____| (")(")\ manent, data corrupted

 per vedere se trovi qualcosa di piů adeguato a quello che ti serve.
Ho visto il link e l'esempio su occupantRole mi ha chiarito un po le cose.
Un suggerimento quindi:
Il mio albero ldap e': ou=People,dc=miodominio all'interno del quale ho
tutti i dipendenti di un'azienda.
Lo avevo creato per la gestione degli account della posta elettronica.
Poiche' ora devo creare una procedura che, per un determinato servizio, dia
determinate autorizzazioni in base ad un ruolo ricoperto, sarebbe il caso
di creare un ramo sotto People chiamato ad esempio ruoli e li usare la
classe organizationalRole?
Grazie.
 

 classe organizationalRole?
Credo di si.
Per stabilire poi i ruoli di un utente credo che poi basti fare una 
query del tipo
(& (objectClass=organizationalRole)(roleOccupant=<DN dell'utente>))
e ti guardi il DN dei nodi ritornati.
Faresti bene però a vedere come il Directory Server che usi si comporta 
quando i ruoli iniziano a essere tanti (se mai dovessero essere tanti): 
se dovesse diventare troppo lento allora forse è il caso di tornare
all'idea che avevi all'inizio, e farti (o trovare già fatta - ma non mi 
pare ce ne siano di adatte tra quelle di serie) una classe con un 
attributo multiplo da appiccicare a ciascun utente e che elenchi i 
privilegi dell'utente.
