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

Wade.Stuart at fallon.com Wade.Stuart at fallon.com
Sun Jul 22 00:51:46 GMT 2007





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




More information about the Catalyst mailing list