Hi, I'm using:

Catalyst::Runtime -- 5.80022
Catalyst::Plugin::Authentication -- 0.10016

I'm finding that C::Request->remote_user is not returning my username when I have authenticated under apache, whereas the deprecated C::R->user does.

This means that C::AuthN::Cred::Remote->authenticate fails under "option 2" -- elsif ($c->req->can('remote_user')) {...} -- since yes, it can(), but alas 'undef' is the return value.

I'm unclear on how C::Request->remote_user is populated, or maybe I'd have figured out what's [not] going on here.

Any pointers, hints, perl packages that may need an upgrade, etc?

Thanks,
--Trevor


FWIW, here are relevant snippets from my App.pm and App::C::Root:

__PACKAGE__->config(
  name => 'App',

  'Plugin::Authentication' => {
    default_realm => 'remoterealm',

    realms => {
      remoterealm => {
        credential => {
          class        => 'Remote',
        },
        store => {class => 'Null',},
      },
    },
  },
);


sub begin : Private {
  my ($self, $c) = @_;

  my $r = $c->req;

  # returns yes, 'undef'
warn "*** can remote_user? ", ($r->can('remote_user') ? 'yes' : 'no'), "\n";
  my $ru = $r->remote_user;
  warn "*** remote_user: [", (defined $ru ? $ru : 'undef'), "]\n";

  # returns yes, 'tleffler'
  warn "*** can user? ", ($r->can('user') ? 'yes' : 'no'), "\n";
  my $u = $r->user;
  warn "*** user: [", (defined $u ? $u : 'undef'), "]\n";

  # returns $VAR1 = undef;
  use Data::Dumper;
  warn "*** env...", Dumper $c->engine->env;

  unless ($c->user_exists) {
    unless ($c->authenticate({})) {
      warn "*** failed authN ***\n";   # I get here
      $c->response->status(HTTP::Status::RC_FORBIDDEN());
    }
  }
}


_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to