On Tue, 9 Aug 2005, Quanah Gibson-Mount wrote:

> 
> 
> --On Tuesday, August 09, 2005 11:47 AM -0700 Larry Lile 
> <[EMAIL PROTECTED]> wrote:
> 
> > I'm still unable to get Net::LDAP and Authen::SASL::Cyrus to play
> > nice.  I'm using perl-ldap 0.33 and Authen-SASL-Cyrus-0.12-server
> > with perl-5.8.6.
> >
> > I get a slightly different result "Use of uninitialized value" but
> > I have elicited the "Local error" message before.
> >
> > Using the test script:
> >
> ># !/opt/perl-5.8.6/bin/perl -w
> > use Net::LDAP;
> > use Authen::SASL;
> >
> > my $slavesasl = Authen::SASL->new(mechanism=>'GSSAPI',
> >     'user' => " ",  # empty callback, so Net::LDAP don't overrides it
> > );
> >
> > my $ldap = Net::LDAP->new('ldap1', version=>3, async=>1, debug =>3) ||
> > die  "$@";
> >
> > my $mesg = $ldap->bind("", sasl=>$slavesasl, async=>1);
> >
> > $mesg->code && die $mesg->error;
> >
> > $mesg =
> > $ldap->search(async=>1,filter=>"(uid=lile)",base=>"dc=anim,dc=dreamworks,
> > dc=com");
> > @entries = $mesg->entries;
> >
> > foreach $entry (@entries) {
> >              $entry->dump;
> > }
> 
> Just out of curiosity, have you looked at or tried my abstracted perl 
> module that goes on top of Net::LDAP and Authen::SASL?
> 
> <http://www.stanford.edu/services/directory/clients/perl.html>
> 
> I use it to make SASL/GSSAPI connections to our OpenLDAP servers all the 
> time...

I don't see how it would help, you are using Net::LDAP to create
a connection to the server, I already have a TGT so we'll skip
that part, then you create an Authen::SASL::GSSAPI object the
bind the Net::LDAP connection with the SASL cred.  

Not using async and not setting user=" " still give the same result
so I can't see a difference.  Using Stanford::Directory is just going
to give me more layers to debug and I can't believe it's going to change
the result.

>From Stanford-Directory-3.0.7/Directory.pm:

    # Connect to the server
    my $serverName = gethostbyaddr(inet_aton($self->ldap_server()), 
AF_INET);
 
    $ld = Net::LDAP->new($serverName,version=>$self->version());
    if ($ld == -1) {
            $self->error_type("System");
            $self->error("Could not connect to directory server (" . 
$self->ldap_server .")");
            return ();
    }
 

[...]

    # Bind to the directory
    my $status;
    my $sasl;
 
    if ($self->mechanism) {
      $sasl = Authen::SASL->new($self->mechanism());
      $status = $ld->bind("", sasl=>$sasl);
    }
    else {
      $status = $ld->bind("");
    }
 
    if ($status->code && $status->error) {
        $self->error_type("System");
        $self->error("Bind failed - " . $status->error . " (STATUS: " . 
$status->code . ")");
        return ();
    }
    $self->{connection_handle}=$ld;

-- 
Larry

Reply via email to