part of traceback: * * Module zope.app.authentication.authentication, line 95, in getPrincipal info = authplugin.principalInfo(id)TypeError: unbound method principalInfo() must be called with LDAPAuth instance as first argument (got str instance instead)code from zope.app.authentication.authentication.getPrincipal: if not id.startswith(self.prefix): ... id = id[len(self.prefix):] for name, authplugin in self.getAuthenticatorPlugins(): info = authplugin.principalInfo(id)... this bit of code clearly goes to show that isinstance(id,str) == Truemy declaration for LDAPAuth.principalInfo:40 def principalInfo(self, id):41 """42 This just returns PrincipalInfo($id) ... it may need revamping43 later, but it appears to be good enough for PrincipalFolder()44 """... this clearly goes to show that self is the first argument. isinstance(self, LDAPAuth) == True