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

Re: Newbie question ldap_sasl_interactive_bind_s: Invalid credentials (49)



Uli Kleemann wrote:
Hello my fellow openldap friends,

I've installed openldap 2.4 on debian lenny usinf the Debian packages
slapd and ldap-utils.
For Authentification I would like to use sasl simple-bind but if I try e.g:

ldapsearch -D "cn=admin,dc=lug-saar,dc=spc" -W -d 255
respectively

ldapsearch -D "cn=Manager,dc=lug-saar,dc=de" -W -d 255

I got:
ldap_sasl_interactive_bind_s: Invalid credentials (49)

As I couldn't find the Error using google yet, but getting as more
confused
as more HOWTOS I read here is

Any HOWTOs you read were most likely wrong. Please list them for us so we can contact their authors and/or blacklist them on our FAQ. It's time we at least tried to put an end to the misinformation out there.

Read the OpenLDAP Admin Guide instead. Pay attention especially to the section on SASL Identities and mapping them to LDAP DNs.

SASL Binds do not use a DN in the Bind request, therefore you don't need the -D option (and anything you provide there is ignored by the server).

You specified "cn=Manager" above but in your slapd.conf below you defined "cn=root" for the rootdn. So even if you successfully told SASL which DN to use, you were telling it the wrong name. (Academic of course, given the other problems.)

You specified the rootpw twice, once in plaintext and once as an SSHA hash. The rootpw directive only accepts one value, and subsequent instances will simply replace prior ones. So your "rootpw secret" directive has no effect.

For SASL Binds based on passwords, slapd must have access to the plaintext of the password, so your SSHA hash will not work.

If you want to be able to SASL Bind to you your rootdn identity you're going to need to use an authz-regexp statement to map the SASL name to the proper DN.



my ldap.conf: --------------------------------------------------------------------------------------------------------------------------------- # # LDAP Defaults #

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

BASE    dc=lug-saar,dc=de
#URI    ldap://ldap.lug-saar.de
URI     ldap://192.168.199.159
ldap_version 3
#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
------------------------------------------------------------------------------------------------------------------------------------
my slapd.conf
-------------------------------------------------------------------------------------------------------------------------------------
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        none

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_hdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1




# Specific Backend Directives for hdb: # Backend specific directives apply to this backend until another # 'backend' directive occurs backend hdb

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend<other>

#######################################################################
# Specific Directives for database #1, of type hdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        hdb

# The base of your directory in database #1
suffix          "dc=lug-saar,dc=de"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn          "cn=root,dc=lug-saar,dc=de"
rootpw          secret
rootpw          {SSHA}Jh+[3]GpYm86f7E0ierBIQJhnN/gKmx
# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
         by dn="cn=root,dc=lug-saar,dc=de" write
         by anonymous auth
         by self write
         by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
         by dn="cn=root,dc=lug-saar,dc=de" write
         by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=root,dc=lug-saar,dc=de" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be hdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database<other>

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"
---------------------------------------------------------------------------------------------------------------------------------
The schema and ldif files I put into /etc/ldap/schema

What did I do wrong? Thanks in advance.


--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/