Strano errore LDAP
Up to Plone Forum
Salve,
sto implementando un site Plone per la Intranet della mia azienda, come sistema di autenticazione uso Active Directory, ma rilevo un comportamento alquanto strano.
Gli utenti si autenticano e si registrano regolarmente e fin qui sembra funzionare tutto bene.
Quando eseguo la ricerca di un utente per assegnare dei diritti per alcuni utenti tutto funziona per altri appare il fatidico "sembra ci sia un errore".
Lo stesso utente ricercato tramite la ZMI viene regolarmente trovato con tutti i suoi attributi.
Qualcuno ha un'idea?
Grazie.
Questo è il track
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module Products.CMFFormController.FSControllerPageTemplate, line 90, in __call__
Module Products.CMFFormController.BaseControllerPageTemplate, line 28, in _call
Module Products.CMFFormController.ControllerBase, line 231, in getNext
Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module Products.CMFFormController.FSControllerPageTemplate, line 90, in __call__
Module Products.CMFFormController.BaseControllerPageTemplate, line 31, in _call
Module Shared.DC.Scripts.Bindings, line 313, in __call__
Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
Module Products.CMFCore.FSPageTemplate, line 216, in _exec
Module Products.CMFCore.FSPageTemplate, line 155, in pt_render
Module Products.PageTemplates.PageTemplate, line 98, in pt_render
Module zope.pagetemplate.pagetemplate, line 117, in pt_render
Module zope.tal.talinterpreter, line 271, in __call__
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 891, in do_useMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 891, in do_useMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 949, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 949, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 855, in do_condition
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 586, in do_setLocal_tal
Module zope.tales.tales, line 696, in evaluate
- URL: file:/usr/local/Plone/buildout-cache/eggs/Plone-3.3.4-py2.4.egg/Products/CMFPlone/skins/plone_prefs/prefs_group_members.cpt
- Line 104, Column 10
- Expression: <PythonExpr (searchstring or findAll) and here.prefs_user_group_search(searchstring, 'all', ignore=ignoreUsersGroups) or []>
- Names:
{'container': <PloneSite at /Pubblica>,
'context': <PloneSite at /Pubblica>,
'default': <object object at 0x2ae417727200>,
'here': <PloneSite at /Pubblica>,
'loop': {},
'nothing': None,
'options': {'args': (),
'state': <Products.CMFFormController.ControllerState.ControllerState object at 0x11757790>},
'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x11b1d878>,
'request': <HTTPRequest, URL=http://pandora/Pubblica/prefs_group_members>,
'root': <Application at >,
'template': <FSControllerPageTemplate at /Pubblica/prefs_group_members>,
'traverse_subpath': [],
'user': <PropertiedUser 'admin'>}
Module Products.PageTemplates.ZRPythonExpr, line 49, in __call__
- __traceback_info__: (searchstring or findAll) and here.prefs_user_group_search(searchstring, 'all', ignore=ignoreUsersGroups) or []
Module PythonExpr, line 1, in <expression>
Module Products.CMFCore.FSPythonScript, line 140, in __call__
Module Shared.DC.Scripts.Bindings, line 313, in __call__
Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
Module Products.CMFCore.FSPythonScript, line 196, in _exec
Module None, line 7, in prefs_user_group_search
- <FSPythonScript at /Pubblica/prefs_user_group_search>
- Line 7
Module zope.deprecation.deprecation, line 152, in deprecated_method
Module Products.PlonePAS.tools.membership, line 146, in searchForMembers
Module Products.PluggableAuthService.PluggableAuthService, line 223, in getUserById
Module Products.PluggableAuthService.PluggableAuthService, line 735, in _findUser
Module Products.PluggableAuthService.PluggableAuthService, line 668, in _getGroupsForPrincipal
Module Products.LDAPMultiPlugins.ActiveDirectoryMultiPlugin, line 200, in getGroupsForPrincipal
Module Products.LDAPUserFolder.LDAPUser, line 215, in __getattr__
AttributeError: memberOf
Ciao Natale,
il problema che hai evidenziato può dipendere da diverse cose. A naso darei un'occhiata alla tua configurazione del plugin ldap, soprattutto per quanto riguarda lo schema. Potresti passarmi la tua configurazione? Così vediamo gli attributi mappati e cerchiamo di trovare una soluzione!
A presto,
davide
Ciao Davide,
Intanto auguri, ti riporto le configurazioni del plugin e dello schema ed un ulteriore particolarità dell'errore (chi sa perchè poi queste cose succedono sempre con gli utenti più rompini):
cn = Orazio Rizzo
cerca
Orazio = errore
Rizzo = errore
Orazio+space = errore
Orazio R = trovato!
se cerco me stesso mi trovo in tutte le salse!
A presto,
Natale
| Title |
|
||
|
Login Name Attribute |
|
||
|
User ID Attribute |
|
||
|
RDN Attribute |
|
||
|
Users Base DN |
|
Scope |
|
|
Group storage |
|
||
|
Group mapping (Applies to LDAP group storage only) |
|
||
|
Groups Base DN |
|
Scope |
|
|
Manager DN |
|
Password |
|
|
Manager DN Usage |
|
Read-only |
|
|
User object classes |
|
||
|
Additional user search filter |
|
Danger! See the online help for details. |
|
|
User password encryption |
|
||
|
Default User Roles |
|
||
| LDAP Attribute Name | Friendly Name | Mapped to Name | Multi-valued | Binary | |
|
|
cn | Canonical Name | fullname |
No |
No |
|
|
Email address |
No |
No |
||
|
|
uid | User id | |
No |
No |
|
|
objectGUID | AD Object GUID | |
No |
No |
|
|
dn | Ditinguished Name | None |
No |
No |
|
|
memberOf | Gruppo | group |
Yes |
No |
|
|
displayName | Nome | fullname |
No |
No |
|
|
sAMAccountName | Utente | username |
No |
No |
|
|
|||||
una possibile causa del problema è che ci sia un carattere "strano"/non stampabile in qualche nome di gruppo.
Ti consiglio un test:
1) eliminare dallo schema objectGUID
2) provare a disabilitare temporaneamente i gruppi ed eventualmente eliminare dallo schema il campo memberOf
Se dopo questo test le ricerche funzioneranno correttamente prova a controllare se l'utente Orazio Rizzo appartiene a gruppi con strani caratteri (accenti, spazi, caratteri speciali).
Facci sapere come va a finire questo test.
Matteo
Io direi che mancano gli attibuti ldap nella user object class. Ovvero non mi risulta che in organizationalPerson ci siano sAMAccountName, memberOf e objectGUID. Aggingerei le objectClasses necessarie. In caso contrario si può usare "Additional search user filter" per trovare gli utenti. Il prodotto installato è PloneLDAPplugin?
A presto.
Ciao,
Matteo ha quasi centrato il problema. Le porcherie sono nel distinguishedName, probabilmente originate dalla migrazione del dominio NT originario attraverso Ad 2000 e poi 2003. Per inciso la stessa operazione l'avevo fatta qualche anno fa verso samba-openldap senza intoppi. Per fortuna esiste Apache Directory Studio per smazzare AD.
Grazie per la collaborazione a presto.
P.S. dopo aver visto quello che fa Plone, in mano ad una persona con esperienza limitata, i suoi fans stanno aumentando vertiginosamente in azienda.