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

Reply via email to