Posts mit dem Label openldap werden angezeigt. Alle Posts anzeigen
Posts mit dem Label openldap werden angezeigt. Alle Posts anzeigen

2010-01-15

WLS und OpenLDAP: netscape.ldap.LDAPException: error result (4)

Fehlfunktion

Die Anmeldung an einer Web Applikation schlägt fehl. Im Logfile findet sich folgender StackTrace:

####<DD.MM.YYYY HH:MM Uhr MEZ> <Error> <Console> <blarc4tst> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1263286974352> <BEA-240003> <Console encountered the following error java.lang.RuntimeException: netscape.ldap.LDAPException: error result (4)
    at weblogic.security.providers.authentication.LDAPAtnNameList.handleUnexpectedLDAPException(LDAPAtnNameList.java:183)
    at weblogic.security.providers.authentication.LDAPAtnNameList.advance(LDAPAtnNameList.java:107)
    at weblogic.security.providers.utils.ListerManager.advance(ListerManager.java:233)
    at weblogic.security.providers.authentication.LDAPAtnDelegate.advance(LDAPAtnDelegate.java:1284)
    at weblogic.security.providers.authentication.LDAPAuthenticatorImpl.advance(LDAPAuthenticatorImpl.java:67)
    at weblogic.security.providers.authentication.OpenLDAPAuthenticatorMBeanImpl.advance(OpenLDAPAuthenticatorMBeanImpl.java:235)
    at sun.reflect.GeneratedMethodAccessor476.invoke(Unknown Source)

Kontext / Fakten

  1. WLS 10.3.2
  2. Start des WLS erzeugt N – Java Prozesse des WLS gestartet
  3. OEL 5.3
  4. OpenLDAP Security Provider im WLS
  5. OpenLDAP – Verzeichnis hat mehr als 500 User oder Gruppen
  6. Konfiguration OpenLDAP Secuity Provider ist korrekt

 

Problem

Die Fehlermeldung:

netscape.ldap.LDAPException: error result (4)

besagt das, dass SIZELIMIT der LDAP Anfrage erreicht wurde. Das heißt die LDAP Anfrage vom WLS wird vom OpenLDAP Server abgebrochen, da die Menge der Anfrage über 500 Einträge beinhaltet.

OpenLDAP Sizelimit Default Parameter

If no sizelimit directive is defined the default is 500. Examples:

sizelimit 0

# do not logout idle clients

sizelimit 100

# limit responses to a maximum of 100

# extended form

sizelimit size=100

# behaves exactly the same as sizelimit 100

sizelimit size.soft=100 size.hard=200

# if no client limit = 100

# if client limit > 200 - rejected

# no limits to number of candidates searched

sizelimit size.unchecked=1000

# if no client limit = 500 max returned (default)

# else client limit

# if client limit > 500 - rejected (default)

# if more than 1000 candidates - rejected

Lösung

a.) Optimierung der User und Group Filter im WLS LDAP Provider, so dass eine kleinere Ergebnismenge erzeugt wird, die nicht durch das SIZELIMIT eingeschränkt wird.

1

b.) Das Sizelimit auf dem LDAP Server muss entsprechend der Systemumgebung angepasst werden.

[oracle@telde ~]# su
Passwort:

[root@telde ~]# cd /etc/openldap
[root@telde openldap]# service ldap stop

:

[root@telde openldap]# vi sldapd.conf

{i = Insert following lines}

# set sizelimit over default value (500)
sizelimit 100

{ESC : wq}

[root@telde openldap]# service ldap start

:

[root@telde openldap]# exit

Anmerkung

Weitere Informationen finden sich hier:

Chapter 6. LDAP Configuration

2009-07-31

TELDE – Installation eines LDAP Server für die Authentifizierung (Teil 5)

Anforderung3_1

Für die Authentifizierung von Entwickler an der Versionsverwaltung des Quellcodes oder Anwender der Applikationen die mit Oracle APEX oder Oracle ADF implementiert sind wird eine übergreifende zentrale Ablage der Identitäten der jeweiligen Benutzer benötigt.

Lösung

  1. Verwendung eines LDAP Server für die Ablage von Benutzer und Gruppen

Komponenten

Bereich Komponente Anmerkung
TELDE Alle vorherigen Teile der Reihe  
LDAP Server OpenLDAP Befindet sich schon auf der Media Set von OEL.

Umsetzung

Bereich Gegenstand
Putty Action: Start Putty
  Action: Open Save Session telde.local als Root
   
Shell login as: root
root@192.168.234.140's password:
Last login: Thu Jul 30 23:45:02 2009 from 192.168.234.1
   
Packages needed by OpenLDAP [root@telde ~]# yum -y install openldap openldap-devel nss_ldap
  Loaded plugins: security
Setting up Install Process
:
Running Transaction
Installing : cyrus-sasl-devel [1/2]
Installing : openldap-devel [2/2]

Installed: openldap-devel.i386 0:2.3.43-3.el5
Dependency Installed: cyrus-sasl-devel.i386 0:2.1.22-4
Complete!
   
Installation OpenLDAP [root@telde ~]# yum -y install openldap-servers.i386 openldap-clients.i386
  Loaded plugins: security
Setting up Install Process
:
Running Transaction
Installing : libtool-ltdl [1/3]
Installing : openldap-clients [2/3]
Installing : openldap-servers [3/3]

Installed: openldap-clients.i386 0:2.3.43-3.el5 openldap-servers.i386 0:2.3.43-3.el5
Dependency Installed: libtool-ltdl.i386 0:1.5.22-6.1
Complete!
   
Configure Namespace and Root Password [root@telde ~]# cd /etc/openldap
[root@telde openldap]# slappasswd
New password: welcome1
Re-enter new password: welcome1
{SSHA}A3E3jHdt4LPRcNL7X8sBLsPt8Pav4VxT

[root@telde openldap]# vi slapd.conf
{Folgende Zeilen innerhalb der Datei konfigurien}
database bdb
suffix "dc=telde,dc=local"
rootdn "cn=Manager,dc=telde,dc=local"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
rootpw {SSHA}A3E3jHdt4LPRcNL7X8sBLsPt8Pav4VxT
   
Default Database Configuration [root@telde openldap]# cp DB_CONFIG.example /var/lib/ldap/DB_CONFIG
   
Autostart
[root@telde openldap]# chkconfig ldap on
   
Erläuterung Innerhalb der Datei slapd.conf muss der Namensraum für des LDAP Servers festgelegt werden und der DN des Administrators inklusive Kennwort hinterlegt werden. Das erzeugte Kennwort mit slappasswd ist entsprechend in der Datei dem Attribute rootpw zu zuordnen.
   
  Um eine erste Verzeichnisstruktur im LDAP Server anzulegen müssen entsprechende Einträge im LDAP Server eingefügt werden. Für diesen Fall gibt es zwei LDIF – Dateien, die in den LDAP Server über die Shell geladen werden können.
   
Start LDAP Service [root@telde openldap]# service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]
   
Download root.ldif
people.ldif
   
WinSCP Action: WinSCP starten und die Verbindung root@telde.local öffnen
  Action: Die Dateien root.ldif und people.ldif in das Verzeichnis /etc/openldap kopieren.
  3_2
   
Create Directory [root@telde openldap]# ldapadd -x -c -D "cn=Manager,dc=telde,dc=local" -W -f root.ldif
Enter LDAP Password: welcome1
adding new entry "dc=telde,dc=local"

adding new entry "cn=Manager,dc=telde,dc=local"

adding new entry "ou=People,dc=telde,dc=local"

adding new entry "ou=Groups,dc=telde,dc=local"

[root@telde openldap]# ldapadd -x -c -D "cn=Manager,dc=telde,dc=local" -W -f people.ldif
Enter LDAP Password: welcome1
adding new entry "uid=hsimpsons,ou=people,dc=telde,dc=local"
   
Test LDAP Service [root@telde openldap]# ldapsearch -x -b 'dc=telde,dc=local' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <dc=telde,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# telde.local
dn: dc=telde,dc=local
dc: telde
objectClass: dcObject
objectClass: organizationalUnit
ou: TEam Linux Development Env
:

# numResponses: 6
# numEntries: 5
   
Add Host Alias for this Service [root@telde openldap]# vi /etc/hosts
  # Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 telde.local telde

#LDAP Service for this Host
127.0.0.1 ldap.telde.local
   
Erläuterung Es ist von Vorteil die Adressierung der einzelnen Services wie LDAP gleich zu Begin in der Adressierung zu Virtualisieren und nicht mit Hostnamen zu arbeiten.

Alle weiteren Komponenten, die einen LDAP Service benötigen werden auf dieser Maschine diesen Dienst über ldap.telde.local aufrufen.

Eine spätere Verlagerung dieses Dienstes ist es nur notwendig die DNS Adressierung zu ändern.

Anmerkung

Sollte das eine oder andere nicht Optimal in meiner Anleitung gelöst sein oder Ihr wisst wie es noch einfacher geht, dann ist jede Anregung oder Kommentar erwünscht.

Als nächstes brauchen wir einen HTTP Server und in Anschluss daran folgt unsere Versionsverwaltung.