The Authen::SASL::Perl::PLAIN mechanism (perl 5.8.0, Authen-SASL-2.06) seems
to be sending the authorization ID and the authentication ID in the wrong
order, which causes obvious bind problems.

$sasl = Authen::SASL->new(mechanism => 'PLAIN',
                          callback => {
                              pass => "top secret",
                              user => "[EMAIL PROTECTED]",
                              authname => "[EMAIL PROTECTED]"
                          });
$ldap->debug(12);
$ldap->bind(sasl => $sasl);


Which logs:

0000   61: SEQUENCE {
0002    1:   INTEGER = 2
0005   56:   [APPLICATION 0] {
0007    1:     INTEGER = 3
000A    0:     STRING = ''
000C   49:     [CONTEXT 3] {
000E    5:       STRING = 'PLAIN'
0015   40:       STRING
0017     :         75 73 65 72 40 69 73 6F 64 65 2E 63 6F 6D 00 61
[EMAIL PROTECTED]
0027     :         75 74 68 40 69 73 6F 64 65 2E 63 6F 6D 00 74 6F
[EMAIL PROTECTED]
0037     :         70 20 73 65 63 72 65 74 __ __ __ __ __ __ __ __ p secret
003F     :     }
003F     :   }
003F     : }

As far as I can tell from
<http://www.ietf.org/internet-drafts/draft-ietf-sasl-plain-03.txt> the
authname (ie authzid) should be sent first, not the user (ie authcid).
According to the draft's grammar:

      message   = [authzid] NUL authcid NUL passwd

Cheers,

Chris

Reply via email to