[Catalyst] New auth stuff and LDAP store...

Adam Jacob adam at hjksolutions.com
Sun Jul 22 18:17:08 GMT 2007


Excellent work here, both of you.

Adam

On 7/21/07, Jay K <jayk at ion0.com> wrote:
> For the benefit of the list:
>
> This issue has been resolved.  It turned out to be a disagreement
> between what C::P::Authenticaiton was trying to place in $user->store
> () and what LDAP was trying to place in $user->store()
>
> LDAP was correct, and C::P::Authentication should keep it's grubby
> little hands off of $user->store() - I am pushing a maintenance
> release of C::P::Authentication to CPAN now.  Should be available
> from CPAN in a few hours.
>
> JayK
>
> On Jul 21, 2007, at 6:51 PM, Wade.Stuart at fallon.com wrote:
>
> >
> >
> >
> >
> > Folks,
> >
> >
> >       I have been wracking my head on this for a few days now (with
> > jayk
> > and mst offering much appreciated support on irc).  It appears that
> > the
> > LDAP store (both .4 and .5) does not play nicely with the new auth .10
> > changes.  From what I have been able to diagnose it appears as
> > though there
> > is an issue with object stringification between auth/credpassword
> > and ldap
> > store. The root error shown (when running with debug on and using
> > any of
> > the LDAP store generated accessors such as $c->user->username ) is :
> >
> >
> > [error] Caught exception in TestLDAP::Controller::Auth->login
> > "Can't use
> > string ("Catalyst::Plugin::Authentication") as a HASH ref while
> > "strict
> > refs" in use at /Library/Perl/5.8.6/Class/Accessor/Fast.pm line 39.
> >  at /Library/Perl/5.8.6/Class/Accessor/Fast.pm line 39
> >
> >
> > Placing a local $SIG{__DIE__} = \&Carp::confess; on line 38 of
> > C::A::F I
> > get a dump such as this:
> >
> > [error] Caught exception in TestLDAP::Controller::Auth->login
> > "Can't use
> > string ("Catalyst::Plugin::Authentication") as a HASH ref while
> > "strict
> > refs" in use at /Library/Perl/5.8.6/Class/Accessor/Fast.pm line 39.
> >  at /Library/Perl/5.8.6/Class/Accessor/Fast.pm line 39
> >
> > Class::Accessor::Fast::__ANON__
> > ('Catalyst::Plugin::Authentication::Store::LDAP::Backend')
> >  called at /Library/Perl/5.8.6
> > /Catalyst/Plugin/Authentication/Store/LDAP/User.pm line 95
> >
> > Catalyst::Plugin::Authentication::Store::LDAP::User::stringify
> > ('Catalyst::Plugin::Authentication::Store::LDAP::User=HASH(0x1b...')
> >  called at /Library/Perl/5.8.6
> > /Catalyst/Plugin/Authentication/Store/LDAP/User.pm line 50
> >
> > Catalyst::Plugin::Authentication::Store::LDAP::User::__ANON__
> > ('Catalyst::Plugin::Authentication::Store::LDAP::User=HASH(0x1b...',
> >  'undef', '') called at /Library/Perl/5.8.6
> > /Catalyst/Plugin/Authentication/Credential/Password.pm line 141
> >
> > Catalyst::Plugin::Authentication::Credential::Password::login
> > ('TestLDAP=HASH(0x1bdf4cc)',
> >  'USERNAME', 'PASSWORD') called at
> > /Volumes/stuffs/Apps/TestLDAP/script/../lib/TestLDAP/Controller/
> > Auth.pm
> > line 47
> >
> > TestLDAP::Controller::Auth::login('TestLDAP::Controller::Auth=HASH
> > (0x1b66f90)',
> >  'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6
> > /Catalyst/Action.pm line 47
> >         Catalyst::Action::execute('Catalyst::Action=HASH(0x1bc3350)',
> > 'TestLDAP::Controller::Auth=HASH(0x1b66f90)', 'TestLDAP=HASH
> > (0x1bdf4cc)')
> > called at /Library/Perl/5.8.6/Catalyst/Action.pm line 32
> >
> > Catalyst::Action::__ANON__('TestLDAP::Controller::Auth=HASH
> > (0x1b66f90)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6/
> > Catalyst.pm line
> > 1187
> >         eval {...} called at /Library/Perl/5.8.6/Catalyst.pm line 1187
> >         Catalyst::execute('TestLDAP=HASH(0x1bdf4cc)',
> > 'TestLDAP::Controller::Auth', 'Catalyst::Action=HASH(0x1bc3350)')
> > called at
> > /Library/Perl/5.8.6/Catalyst/Action.pm line 42
> >         Catalyst::Action::dispatch('Catalyst::Action=HASH(0x1bc3350)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6
> > /Catalyst/Controller.pm line 74
> >
> > Catalyst::Controller::_ACTION('TestLDAP::Controller::Auth=HASH
> > (0x1b66f90)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6
> > /Catalyst/Action.pm line 47
> >         Catalyst::Action::execute('Catalyst::Action=HASH(0x1bb230c)',
> > 'TestLDAP::Controller::Auth=HASH(0x1b66f90)', 'TestLDAP=HASH
> > (0x1bdf4cc)')
> > called at /Library/Perl/5.8.6/Catalyst/Action.pm line 32
> >
> > Catalyst::Action::__ANON__('TestLDAP::Controller::Auth=HASH
> > (0x1b66f90)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6/
> > Catalyst.pm line
> > 1187
> >         eval {...} called at /Library/Perl/5.8.6/Catalyst.pm line 1187
> >         Catalyst::execute('TestLDAP=HASH(0x1bdf4cc)',
> > 'TestLDAP::Controller::Auth', 'Catalyst::Action=HASH(0x1bb230c)')
> > called at
> > /Library/Perl/5.8.6/Catalyst/Action.pm line 42
> >         Catalyst::Action::dispatch('Catalyst::Action=HASH(0x1bb230c)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6
> > /Catalyst/Dispatcher.pm line 177
> >
> > Catalyst::Dispatcher::forward('Catalyst::Dispatcher=HASH(0x1a79c10)',
> > 'TestLDAP=HASH(0x1bdf4cc)', '_ACTION') called at /Library/Perl/5.8.6
> > /Catalyst.pm line 300
> >         Catalyst::forward('TestLDAP=HASH(0x1bdf4cc)', '_ACTION')
> > called at
> > /Library/Perl/5.8.6/Catalyst/Controller.pm line 48
> >
> > Catalyst::Controller::_DISPATCH('TestLDAP::Controller::Auth=HASH
> > (0x1b66f90)',
> >  'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6
> > /Catalyst/Action.pm line 47
> >         Catalyst::Action::execute('Catalyst::Action=HASH(0x2d42dfc)',
> > 'TestLDAP::Controller::Auth=HASH(0x1b66f90)', 'TestLDAP=HASH
> > (0x1bdf4cc)')
> > called at /Library/Perl/5.8.6/Catalyst/Action.pm line 32
> >
> > Catalyst::Action::__ANON__('TestLDAP::Controller::Auth=HASH
> > (0x1b66f90)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6/
> > Catalyst.pm line
> > 1187
> >         eval {...} called at /Library/Perl/5.8.6/Catalyst.pm line 1187
> >         Catalyst::execute('TestLDAP=HASH(0x1bdf4cc)',
> > 'TestLDAP::Controller::Auth', 'Catalyst::Action=HASH(0x2d42dfc)')
> > called at
> > /Library/Perl/5.8.6/Catalyst/Action.pm line 42
> >         Catalyst::Action::dispatch('Catalyst::Action=HASH(0x2d42dfc)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6
> > /Catalyst/Dispatcher.pm line 177
> >
> > Catalyst::Dispatcher::forward('Catalyst::Dispatcher=HASH(0x1a79c10)',
> > 'TestLDAP=HASH(0x1bdf4cc)', '/auth/_DISPATCH') called at
> > /Library/Perl/5.8.6/Catalyst.pm line 300
> >         Catalyst::forward('TestLDAP=HASH(0x1bdf4cc)', '/auth/
> > _DISPATCH')
> > called at /Library/Perl/5.8.6/Catalyst/Dispatcher.pm line 116
> >
> > Catalyst::Dispatcher::dispatch('Catalyst::Dispatcher=HASH(0x1a79c10)',
> > 'TestLDAP=HASH(0x1bdf4cc)') called at /Library/Perl/5.8.6/
> > Catalyst.pm line
> > 1136
> >         Catalyst::dispatch('TestLDAP=HASH(0x1bdf4cc)') called at
> > /System/Library/Perl/5.8.6/NEXT.pm line 75
> >         NEXT::AUTOLOAD('TestLDAP=HASH(0x1bdf4cc)') called at
> > /Library/Perl/5.8.6/Catalyst/Plugin/Static/Simple.pm line 62
> >
> > Catalyst::Plugin::Static::Simple::dispatch('TestLDAP=HASH(0x1bdf4cc)')
> > called at /Library/Perl/5.8.6/Catalyst.pm line 1496
> >         eval {...} called at /Library/Perl/5.8.6/Catalyst.pm line 1487
> >         Catalyst::handle_request('TestLDAP') called at /Library/
> > Perl/5.8.6
> > /Catalyst/Engine/HTTP.pm line 365
> >
> > Catalyst::Engine::HTTP::_handler
> > ('Catalyst::Engine::HTTP::Restarter=HASH(0x1a8d7e0)',
> >  'TestLDAP', 3000, 'POST', '/auth/login', 'HTTP/1.1') called at
> > /Library/Perl/5.8.6/Catalyst/Engine/HTTP.pm line 275
> >
> > Catalyst::Engine::HTTP::run('Catalyst::Engine::HTTP::Restarter=HASH
> > (0x1a8d7e0)',
> >  'TestLDAP', 3000, 'undef', 'HASH(0x180c418)') called at
> > /System/Library/Perl/5.8.6/NEXT.pm line 75
> >         NEXT::AUTOLOAD('Catalyst::Engine::HTTP::Restarter=HASH
> > (0x1a8d7e0)',
> > 'TestLDAP', 3000, 'undef', 'HASH(0x180c418)') called at /Library/
> > Perl/5.8.6
> > /Catalyst/Engine/HTTP/Restarter.pm line 69
> >
> > Catalyst::Engine::HTTP::Restarter::run
> > ('Catalyst::Engine::HTTP::Restarter=HASH(0x1a8d7e0)',
> >  'TestLDAP', 3000, 'undef', 'HASH(0x180c418)') called at
> > /Library/Perl/5.8.6/Catalyst.pm line 1800
> >         Catalyst::run('TestLDAP', 3000, 'undef', 'HASH(0x180c418)')
> > called
> > at ./testldap_server.pl line 55"
> >
> >
> > If I turn off debug things seem to play a little bit better -- the
> > line
> > that seems to be tossing the error is 141 in Credential/Password.pm:
> >
> > $c->log->debug("Successfully authenticated user '$user'.")
> >           if $c->debug;
> >
> > which leads be to believe that there is a bigger issue with passing
> > $user
> > around as an object vs string vs hash between these modules.
> >
> >  Thanks!
> > Wade Stuart
> > Fallon Worldwide
> > P: 612.758.2660
> > C: 612.877.0385
> >
> >
> > _______________________________________________
> > List: Catalyst at lists.rawmode.org
> > Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> > Searchable archive: http://www.mail-archive.com/
> > catalyst at lists.rawmode.org/
> > Dev site: http://dev.catalyst.perl.org/
>
> ---
> "Those who can make you believe absurdities can make you commit
> atrocities." --Voltaire
>
>
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
>


-- 
HJK Solutions - We Launch Startups - http://www.hjksolutions.com
Adam Jacob, Senior Partner
T: (206) 508-4759 E: adam at hjksolutions.com



More information about the Catalyst mailing list