[Date Prev][Date Next] [Chronological] [Thread] [Top]

cyrus-sasl-2.1.15 and openldap-2.1.22 on FreeBSD 4.8 Release



Hi all,

I'm trying to get cyrus-sasl-2.1.15 and openldap-2.1.22 to work together
on FreeBSD 4.8 Release. OpenLDAP works without a problem but if I try to
authenticate using SASL it appears to hang rather than prompting me for
a password. I added the line WITH-SASL=yes to the Makefile to get the
FreeBSD port to compile with SASL support. What am I doing wrong?

command
#============begin==================
mail# ldapsearch -U shunsley
SASL/DIGEST-MD5 authentication started

#=============end===================================

slapd.conf
#============begin==================
include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/outlook.schema

pidfile         /var/run/ldap/slapd.pid
argsfile        /var/run/ldap/slapd.args

password-hash {CLEARTEXT}

TLSCACertificateFile /usr/local/etc/openldap/cacert.pem
TLSCertificateFile /usr/local/etc/openldap/newcert.pem
TLSCertificateKeyFile /usr/local/etc/openldap/newreq.pem

sasl-regexp uid=(.*),cn=mail.widget.com,cn=DIGEST-MD5,cn=auth
uid=$1,ou=user,dc=widget.com

access to attr=userPassword
  by self write
  by anonymous auth
  by dn.base="cn=Manager" write
  by * none

access to *
  by self write
  by dn.base="cn=Manager" write
  by * read

database        bdb
suffix          ""
rootdn          "cn=Manager"

rootpw          {SSHA}6U+CvXirYcNLDRBHKEwGBIMYJwViQDBT
directory       /var/db/openldap-data

index   objectClass,uid eq
#=============end===================================

Output from running slapd with -d -1
#============begin==================
daemon: activity on 1 descriptors
daemon: new connection on 13
str2filter "(objectclass=*)"
put_filter: "(objectclass=*)"
put_filter: simple
put_simple_filter: "objectclass=*"
begin get_filter
PRESENT
ber_scanf fmt (m) ber:
ber_dump: buf=0x08161000 ptr=0x08161000 end=0x0816100d len=13
  0000:  87 0b 6f 62 6a 65 63 74  63 6c 61 73 73
..objectclass
end get_filter 0
conn=0 fd=13 ACCEPT from IP=::1 1177 (IP=:: 389)
daemon: added 13r
daemon: activity on:
daemon: select: listen=8 active_threads=0 tvp=NULL
daemon: select: listen=9 active_threads=0 tvp=NULL
daemon: activity on 1 descriptors
daemon: activity on: 13r
daemon: read activity on 13
connection_get(13)
connection_get(13): got connid=0
connection_read(13): checking for input on id=0
ber_get_next
ldap_read: want=8, got=8
  0000:  30 3e 02 01 01 63 39 04                            0>...c9.
ldap_read: want=56, got=56
  0000:  00 0a 01 00 0a 01 00 02  01 00 02 01 00 01 01 00
................
  0010:  87 0b 6f 62 6a 65 63 74  63 6c 61 73 73 30 19 04
..objectclass0..
  0020:  17 73 75 70 70 6f 72 74  65 64 53 41 53 4c 4d 65
.supportedSASLMe
  0030:  63 68 61 6e 69 73 6d 73                            chanisms
ber_get_next: tag 0x30 len 62 contents:
ber_dump: buf=0x081216c0 ptr=0x081216c0 end=0x081216fe len=62
  0000:  02 01 01 63 39 04 00 0a  01 00 0a 01 00 02 01 00
...c9...........
  0010:  02 01 00 01 01 00 87 0b  6f 62 6a 65 63 74 63 6c
........objectcl
  0020:  61 73 73 30 19 04 17 73  75 70 70 6f 72 74 65 64
ass0...supported
  0030:  53 41 53 4c 4d 65 63 68  61 6e 69 73 6d 73
SASLMechanisms
ber_get_next
ldap_read: want=8 error=Resource temporarily unavailable ber_get_next on
fd 13 failed errno=35 (Resource temporarily unavailable) do_search
ber_scanf fmt ({miiiib) ber:
ber_dump: buf=0x081216c0 ptr=0x081216c3 end=0x081216fe len=59
  0000:  63 39 04 00 0a 01 00 0a  01 00 02 01 00 02 01 00
c9..............
  0010:  01 01 00 87 0b 6f 62 6a  65 63 74 63 6c 61 73 73
.....objectclass
  0020:  30 19 04 17 73 75 70 70  6f 72 74 65 64 53 41 53
0...supportedSAS
  0030:  4c 4d 65 63 68 61 6e 69  73 6d 73                  LMechanisms
>>> dnPrettyNormal: <>
<<< dnPrettyNormal: <>, <>
SRCH "" 0 0    0 0 0
begin get_filter
PRESENT
ber_scanf fmt (m) ber:
ber_dump: buf=0x081216c0 ptr=0x081216d6 end=0x081216fe len=40
  0000:  87 0b 6f 62 6a 65 63 74  63 6c 61 73 73 30 19 04
..objectclass0..
  0010:  17 73 75 70 70 6f 72 74  65 64 53 41 53 4c 4d 65
.supportedSASLMe
  0020:  63 68 61 6e 69 73 6d 73                            chanisms
end get_filter 0
    filter: (objectClass=*)
ber_scanf fmt ({M}}) ber:
ber_dump: buf=0x081216c0 ptr=0x081216e3 end=0x081216fe len=27
  0000:  00 19 04 17 73 75 70 70  6f 72 74 65 64 53 41 53
....supportedSAS
  0010:  4c 4d 65 63 68 61 6e 69  73 6d 73                  LMechanisms
    attrs: supportedSASLMechanisms
conn=0 op=0 SRCH base="" scope=0 filter="(objectClass=*)" conn=0 op=0
SRCH attr=supportedSASLMechanisms => test_filter
    PRESENT
=> access_allowed: search access to "" "objectClass" requested =>
acl_get: [1] check attr objectClass => acl_get: [2] check attr
objectClass <= acl_get: [2] acl  attr: objectClass => acl_mask: access
to entry "", attr "objectClass" requested => acl_mask: to all values by
"", (=n) <= check a_dn_pat: self <= check a_dn_pat: cn=manager <= check
a_dn_pat: * <= acl_mask: [3] applying read(=rscx) (stop) <= acl_mask:
[3] mask: read(=rscx) => access_allowed: search access granted by
read(=rscx) <= test_filter 6 => send_search_entry: dn="" =>
access_allowed: read access to "" "entry" requested => acl_get: [1]
check attr entry => acl_get: [2] check attr entry <= acl_get: [2] acl
attr: entry => acl_mask: access to entry "", attr "entry" requested =>
acl_mask: to all values by "", (=n) <= check a_dn_pat: self <= check
a_dn_pat: cn=manager <= check a_dn_pat: * <= acl_mask: [3] applying
read(=rscx) (stop) <= acl_mask: [3] mask: read(=rscx) => access_allowed:
read access granted by read(=rscx) => access_allowed: read access to ""
"supportedSASLMechanisms" requested => acl_get: [1] check attr
supportedSASLMechanisms => acl_get: [2] check attr
supportedSASLMechanisms <= acl_get: [2] acl  attr:
supportedSASLMechanisms
access_allowed: no res from state (supportedSASLMechanisms)
=> acl_mask: access to entry "", attr "supportedSASLMechanisms"
requested => acl_mask: to all values by "", (=n) <= check a_dn_pat: self
<= check a_dn_pat: cn=manager <= check a_dn_pat: * <= acl_mask: [3]
applying read(=rscx) (stop) <= acl_mask: [3] mask: read(=rscx) =>
access_allowed: read access granted by read(=rscx)
ber_flush: 73 bytes to sd 13
  0000:  30 47 02 01 01 64 42 04  00 30 3e 30 3c 04 17 73
0G...dB..0>0<..s
  0010:  75 70 70 6f 72 74 65 64  53 41 53 4c 4d 65 63 68
upportedSASLMech
  0020:  61 6e 69 73 6d 73 31 21  04 04 4e 54 4c 4d 04 03
anisms1!..NTLM..
  0030:  4f 54 50 04 0a 44 49 47  45 53 54 2d 4d 44 35 04
OTP..DIGEST-MD5.
  0040:  08 43 52 41 4d 2d 4d 44  35                        .CRAM-MD5
ldap_write: want=73, written=73
  0000:  30 47 02 01 01 64 42 04  00 30 3e 30 3c 04 17 73
0G...dB..0>0<..s
  0010:  75 70 70 6f 72 74 65 64  53 41 53 4c 4d 65 63 68
upportedSASLMech
  0020:  61 6e 69 73 6d 73 31 21  04 04 4e 54 4c 4d 04 03
anisms1!..NTLM..
  0030:  4f 54 50 04 0a 44 49 47  45 53 54 2d 4d 44 35 04
OTP..DIGEST-MD5.
  0040:  08 43 52 41 4d 2d 4d 44  35                        .CRAM-MD5
conn=0 op=0 ENTRY dn=""
<= send_search_entry
send_ldap_result: conn=0 op=0 p=3
send_ldap_result: err=0 matched="" text=""
send_ldap_response: msgid=1 tag=101 err=0
ber_flush: 14 bytes to sd 13
  0000:  30 0c 02 01 01 65 07 0a  01 00 04 00 04 00
0....e........
ldap_write: want=14, written=14
  0000:  30 0c 02 01 01 65 07 0a  01 00 04 00 04 00
0....e........
conn=0 op=0 RESULT tag=101 err=0 text=
daemon: select: listen=8 active_threads=0 tvp=NULL
daemon: select: listen=9 active_threads=0 tvp=NULL
daemon: activity on 1 descriptors
daemon: activity on: 13r
daemon: read activity on 13
connection_get(13)
connection_get(13): got connid=0
connection_read(13): checking for input on id=0
ber_get_next
ldap_read: want=8, got=8
  0000:  30 18 02 01 02 60 13 02                            0....`..
ldap_read: want=18, got=18
  0000:  01 03 04 00 a3 0c 04 0a  44 49 47 45 53 54 2d 4d
........DIGEST-M
  0010:  44 35                                              D5
ber_get_next: tag 0x30 len 24 contents:
ber_dump: buf=0x08127ce0 ptr=0x08127ce0 end=0x08127cf8 len=24
  0000:  02 01 02 60 13 02 01 03  04 00 a3 0c 04 0a 44 49
...`..........DI
  0010:  47 45 53 54 2d 4d 44 35                            GEST-MD5
ber_get_next
ldap_read: want=8 error=Resource temporarily unavailable ber_get_next on
fd 13 failed errno=35 (Resource temporarily unavailable) do_bind
ber_scanf fmt ({imt) ber:
ber_dump: buf=0x08127ce0 ptr=0x08127ce3 end=0x08127cf8 len=21
  0000:  60 13 02 01 03 04 00 a3  0c 04 0a 44 49 47 45 53
`..........DIGES
  0010:  54 2d 4d 44 35                                     T-MD5
ber_scanf fmt ({o) ber:
ber_dump: buf=0x08127ce0 ptr=0x08127cea end=0x08127cf8 len=14
  0000:  00 0c 04 0a 44 49 47 45  53 54 2d 4d 44 35
....DIGEST-MD5
ber_scanf fmt (}}) ber:
ber_dump: buf=0x08127ce0 ptr=0x08127cf8 end=0x08127cf8 len=0

>>> dnPrettyNormal: <>
<<< dnPrettyNormal: <>, <>
do_sasl_bind: dn () mech DIGEST-MD5
conn=0 op=1 BIND dn="" method=163
==> sasl_bind: dn="" mech=DIGEST-MD5 datalen=0
SASL [conn=0] Debug: DIGEST-MD5 server step 1
daemon: select: listen=8 active_threads=1 tvp=NULL
daemon: select: listen=9 active_threads=1 tvp=NULL
#=============end===================================

Many thanks,

Shane