> On May 31, 2015, at 11:06 PM, Cooke, Mark <[email protected]> wrote: > >> On May 26, 2015, at 12:09 PM, RjOllos <[email protected]> wrote: >> >> On Tuesday, May 26, 2015 at 2:26:31 AM UTC-4, Cooke, Mark wrote: >> >> > On May 22, 2015 3:02 PM, "Josh Santangelo" >> <[email protected] <javascript:> > wrote: >> > > >> > > >> > >> On May 21, 2015, at 8:53 PM, RjOllos <[email protected] >> <javascript:> > wrote: >> > >> >> > >> On Thursday, May 21, 2015 at 2:23:50 PM UTC-7, Josh >> Santangelo wrote: >> > >>> >> > >>> I ran the 1.0.6 MSI, but it seemed to break LDAP >> authentication. When I >> > browse to trac I see: >> > >>> >> > >>> Traceback (most recent call last): >> > >>> File "C:\Python27\lib\site-packages\trac\web\api.py", >> line 559, in >> > send_error >> > >>> data, 'text/html') >> > >>> File "C:\Python27\lib\site- >> packages\trac\web\chrome.py", line 1063, in >> > render_template >> > >>> template = self.load_template(filename, >> method=method) >> > >>> File "C:\Python27\lib\site- >> packages\trac\web\chrome.py", line 1017, in >> > load_template >> > >>> self.get_all_templates_dirs(), >> auto_reload=self.auto_reload, >> > >>> File "C:\Python27\lib\site- >> packages\trac\web\chrome.py", line 725, in >> > get_all_templates_dirs >> > >>> for provider in self.template_providers: >> > >>> File "C:\Python27\lib\site-packages\trac\core.py", line >> 78, in >> > extensions >> > >>> components = [component.compmgr[cls] for cls in >> classes] >> > >>> File "C:\Python27\lib\site-packages\trac\core.py", line >> 204, in >> > __getitem__ >> > >>> component = cls(self) >> > >>> File "C:\Python27\lib\site-packages\trac\core.py", line >> 140, in >> > __call__ >> > >>> self.__init__() >> > >>> File "build\bdist.win32\egg\acct_mgr\web_ui.py", line >> 75, in __init__ >> > >>> self._write_check(log=True) >> > >>> File "build\bdist.win32\egg\acct_mgr\web_ui.py", line >> 79, in >> > _write_check >> > >>> writable = >> self.acctmgr.get_all_supporting_stores('set_password') >> > >>> File "build\bdist.win32\egg\acct_mgr\api.py", line 348, >> in >> > get_all_supporting_stores >> > >>> for store in self.password_stores: >> > >>> File "C:\Python27\lib\site-packages\trac\config.py", >> line 777, in >> > __get__ >> > >>> option=tag.tt <http://tag.tt/> ("[%s] %s" % >> (self.section, self.name <http://self.name/> )))) >> > >>> ConfigurationError: Cannot find implementation(s) of the >> > <tt>IPasswordStore</tt> interface named >> <tt>LdapAuthStore</tt>. Please check >> > that the Component is enabled or update the option >> <tt>[account-manager] >> > password_store</tt> in trac.ini. >> > >>> >> > >>> I backed up my Python directory before the install, and >> restoring it >> > seems to have restored things back to working. >> > >>> >> > >> >> > >> Trac 1.0.2 and later enforces that Components specified in >> the trac.ini >> > configuration file must be loaded. Often users find that when >> upgrading they >> > had errors in their configuration that passed silently prior >> to the upgrade. >> > >> >> > >> Your [account-manager] password_store setting includes >> LdapAuthStore, but >> > the plugin is either not installed, not loading correctly due >> to an error, or >> > not enabled. LdapAuthStore is provided by LdapAuthStorePlugin >> (1). Perhaps >> > you aren't actually using that store? In that case you can >> just removed >> > LdapAuthStore from password_store. But if you are using the >> plugin, and the >> > plugin is installed and enabled, then we need to determine >> why it's not >> > loading. See TracTroubleshooting (2). It would also be useful >> to confirm, >> > before trying the upgrade again, if it is loading in Trac >> 1.0.2. You can do >> > that by inspecting the debug level log, as described in >> TracTroubleshooting. >> > > >> > > >> > > Thanks, it seems your suspicions about the plugin not >> loading are correct, >> > according to the log, which I’ve pasted below. I’m confused >> though, since >> > LDAP authentication does work, and has for some time. How’s >> that possible if >> > the plugin isn’t loading? I confirmed that the .egg files in >> the log are >> > indeed there. >> > > >> > > 2014-04-01 11:22:27,046 Trac[env] INFO: ------------------- >> ------------- >> > environment startup [Trac 1.0.1] ---------------------------- >> ---- >> > > 2014-04-01 11:22:27,079 Trac[loader] DEBUG: Adding plugin >> > LdapAuthStorePlugin 0.3.0 from >> c:\trac\stimulant\plugins\ldapauthstoreplugin- >> > 0.3.0-py2.7.egg >> > > 2014-04-01 11:22:27,079 Trac[loader] DEBUG: Adding plugin >> LdapPlugin >> > 0.7.0dev from c:\trac\stimulant\plugins\ldapplugin-0.7.0dev- >> py2.7.egg >> > > 2014-04-01 11:22:27,174 Trac[loader] DEBUG: Loading >> > ldapauthstore.ldap_store from >> c:\trac\stimulant\plugins\ldapauthstoreplugin- >> > 0.3.0-py2.7.egg >> > > 2014-04-01 11:22:27,181 Trac[loader] ERROR: Skipping >> > "ldapauthstore.ldap_store = ldapauthstore.ldap_store": >> > > >> > > Traceback (most recent call last): >> > > File "C:\Python27\lib\site-packages\trac\loader.py", line >> 68, in >> > _load_eggs >> > > entry.load(require=True) >> > > File "C:\Python27\lib\site-packages\setuptools-0.6c11- >> > py2.7.egg\pkg_resources.py", line 1954, in load >> > > entry = __import__(self.module_name, >> globals(),globals(), ['__name__']) >> > > File "build\bdist.win32\egg\ldapauthstore\ldap_store.py", >> line 2, in >> > <module> >> > > File "build\bdist.win32\egg\ldapplugin\__init__.py", line >> 2, in <module> >> > > File "build\bdist.win32\egg\ldapplugin\api.py", line 25, >> in <module> >> > > ImportError: No module named ldap >> > > 2014-04-01 11:22:27,181 Trac[loader] DEBUG: Loading >> ldapplugin.api from >> > c:\trac\stimulant\plugins\ldapplugin-0.7.0dev-py2.7.egg >> > > 2014-04-01 11:22:27,187 Trac[loader] ERROR: Skipping >> "ldapplugin.api = >> > ldapplugin.api": >> > > >> > > Traceback (most recent call last): >> > > File "C:\Python27\lib\site-packages\trac\loader.py", line >> 68, in >> > _load_eggs >> > > entry.load(require=True) >> > > File "C:\Python27\lib\site-packages\setuptools-0.6c11- >> > py2.7.egg\pkg_resources.py", line 1954, in load >> > > entry = __import__(self.module_name, >> globals(),globals(), ['__name__']) >> > > File "build\bdist.win32\egg\ldapplugin\__init__.py", line >> 2, in <module> >> > > File "build\bdist.win32\egg\ldapplugin\api.py", line 25, >> in <module> >> > > ImportError: No module named ldap >> > >> > -----Original Message----- >> > From: [email protected] <javascript:> [mailto:trac- >> [email protected] <javascript:> ] On >> > Behalf Of Ryan Ollos >> > >> > It looks like it's not finding the Python ldap package. You >> might be able to >> > install that from pypi. >> > >> > https://pypi.python.org/pypi/python-ldap >> <https://pypi.python.org/pypi/python-ldap> >> >> Hmm, I think we would be better to understand how LDAP auth is >> working >> before fixing something that it looks like is not needed. >> >> Are you using apache httpd? I use Trac on Windoze and use >> apache to >> authenticate against our AD forest, perhaps you do the same? >> In which >> case you do not need the Trac ldap interface at all... >> >> ~ mark c >> >> >> >> Does the Apache configuration you use populate the session info such >> as name and email address from the LDAP data store? >> >> -----Original Message----- >> From: [email protected] [mailto:[email protected]] On >> Behalf Of Josh Santangelo >> Sent: 31 May 2015 22:45 >> To: [email protected] >> Subject: Re: [Trac] Updating Trac on Windows? >> >> Yes, I’m using Apache on Windows. I believe the original configuration was >> based on the docs here: >> https://trac-hacks.org/wiki/LdapPlugin >> >> httpd.conf looks something like: >> >> <Location /> >> Order deny,allow >> Allow from all >> AuthType Basic >> AuthName "Stimulant Trac" >> AuthBasicProvider "ldap" >> AuthLDAPURL "ldap://…" >> AuthLDAPBindDN [email protected] >> AuthLDAPBindPassword “..." >> authzldapauthoritative Off >> require ldap-group CN=Stimulant Devops,CN=Users,DC=stimulant,DC=local >> </Location> > > This is definitely providing _authentication_ against LDAP as well as > _authorisation_ in that httpd will reject users not in the specified group. > What this does is pass the user info through to Trac in the session info > (based on the parameters specified in the LDAP URL which can include the > user's email). > > If you only need to _authorise_ users based on LDAP group membership you are > done. Do all members of "Stimulant Devops" (via the built-in "authenticated" > group) have the same rights or do you need finer grained permissions? > >> trac.ini looks something like: >> >> [ldap] >> allusers_group = Stimulant Devops >> basedn = dc=stimulant,dc=local >> bind_passwd = ... >> bind_user = cn=trac,dc=stimulant,dc=local >> enable = true >> group_rdn = ou=groups >> host = ... >> store_bind = true >> user_rdn = ou=people > > Trac is repeating work done (probably more efficiently) by httpd. > > As I only have a small number of users per repository I manage those special > cases through the usual Trac Admin interface (no plugins required) using > their network login names, forced to lower case. Personally I would remove > this plugin and the section from trac.ini.
I removed the plugin from trac.ini and authorization still seemed to work. I redid the upgrade to 1.0.6 by switching my c:\python27 to the state it was in after running the MSI. After restarting the server I saw the same error as before rendered into the browser (Cannot find implementation(s) of the <tt>IPasswordStore</tt> interface named <tt>LdapAuthStore</tt>). I commented out password_store = LdapAuthStore from trac.ini. Trac pages now load, but at the top it says "Error with navigation contributor AccountModule” The footer also still says 1.0.1. I re-ran the MSI installer, but it didn’t change anything. -- You received this message because you are subscribed to the Google Groups "Trac Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/trac-users. For more options, visit https://groups.google.com/d/optout.
