On 28/1/04 10:55 pm, Kurt D. Zeilenga <[EMAIL PROTECTED]> wrote: > At 07:52 AM 1/20/2004, Chris Ridd wrote: >> I note that when using SASL, Net::LDAP's bind method automatically sets the >> user field to something: >> >> my $sasl = $passwd; >> # Tell the SASL object our user identifier >> $sasl->callback( user => "dn: $stash{name}") >> unless $sasl->callback('user'); >> >> We're using SASL EXTERNAL. With this mechanism the authentication id comes >> from the client's cert, and the optional sasl->credentials field contains >> the authorization id. I'm not sure where all this is defined :-) >> >> Because Net::LDAP's setting the authz id to something ("dn: "), this causes >> a bind failure. (The user isn't allowed to authorize as someone else.) >> >> Setting the sasl->credentials seems wrong to me in this case. What do other >> people think who are using EXTERNAL? Is the best place to fix this (if it is >> a bug) in EXTERNAL.pm? > > My thoughts on this are: > > Unless the user wishes to assume the identity of another > user, no authzid should be specified. The server will do > the right thing.
I agree. > It would be incorrect for the client itself to attempt to > derive an authzid from what it thinks the authcid is because > 1) it may not know the precise authcid used by the server > (EXTERNAL is not necessarily tied to TLS, could be tied to > something else.) and 2) the client reliably mimic the > server's authcid->authzid mapping behavior without a priori > knowledge. That is, whatever the client does on its own > will likely be the wrong thing. Agreed. It looks like this needs fixing in EXTERNAL.pm. (If user is set in the callback, delete/ignore it.) > BTW, there should space after "dn:". See RFC 2829. ^ be no OK, that's a second bug. Cheers, Chris