Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[JNDI] LDAP Referral Authentifizierung

3 views
Skip to first unread message

Jens Kutschke

unread,
Sep 10, 2003, 3:45:02 AM9/10/03
to
Hallo,

Ich habe einen Directory Server mit einem Referral(Active Directory)
eingerichtet und möchte nun mittels JNDI Daten vom Directory Server abholen.
Dazu kann ich einen Kontext mit Authentifizierungsinformationen für den
Directory Server erzeugen und so eine Verbindung herstellen. Allerdings
bekomme ich Exceptions, da das Active Directory ganz andere
Authentifizierungsdaten benötigt.

Gibt es da einen Workaround?

Danke für jede Hilfe,
Jens


--
_____________________________________________
Jens Kutschke
http://www.j-dimension.com

Klaus Mueller

unread,
Sep 10, 2003, 4:32:21 AM9/10/03
to
Jens Kutschke wrote:
>
> so eine Verbindung herstellen. Allerdings bekomme ich Exceptions, da
> das Active Directory ganz andere Authentifizierungsdaten benötigt.

Klar, schick die richtigen Daten mit. ;-)

Klaus

Jens Kutschke

unread,
Sep 10, 2003, 5:06:12 AM9/10/03
to
> >
> > so eine Verbindung herstellen. Allerdings bekomme ich Exceptions, da
> > das Active Directory ganz andere Authentifizierungsdaten benötigt.
>
> Klar, schick die richtigen Daten mit. ;-)
>

Das ist prinzipiell eine gute Idee :o) Aber laß mich das noch einmal
genauer ausführen:

Der Directory Server(in diesem Fall IBM) ist mein EINZIGER Server, wenn ich
von der Java-Clientseite aus betrachte. Gegenüber diesem kann ich mich auch
authentifizieren. In der Serverkonfiguration des IBM-Directories habe ich
ein Active Directory als Referral eingetragen, d.h. ich kann eine Abfrage an
den IBM-Server stellen, dieser sucht zunächst in seinen Daten und befragt
anschließend das Active Directory und gibt mir eine Gesamtergebnismenge
zurück. IBM Server und Active Directory haben UNTERSCHIEDLICHE
Nutzername/Passwort-Kombinationen. Somit müsste ich von der Java-Clientseite
auch zwei unterschiedliche Authentifizierungsinformationen mitschicken.

Etwas Code dazu. Die Properties für die Verbindung sind folgende:

Properties env = new Properties();
env.put(DirContext.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");

// URL des IBM Servers
env.put(DirContext.PROVIDER_URL,"ldap://aidw2k039:389");

// Angabe, daß Referrals mit durchsucht werden sollen
env.put(DirContext.REFERRAL, "follow");

// User für den IBM-Server
String username="bla1";
env.put(javax.naming.Context.SECURITY_PRINCIPAL, username);
// Passwort für den IBM-Server
String password="bla2";
env.put(javax.naming.Context.SECURITY_CREDENTIALS, password);

Die Verbindung funktioniert dann auch.

DirContext dc = new InitialDirContext(env);

Wenn ich allerdings eine Suche durchführe, welche Referrals einbezieht,
schlägt folgendes fehl:

SearchControls sc = new SearchControls();
sc.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration ne = null;

// Fehler, weil Authentifizierungsinformationen für den Referral
fehlen/falsch sind
ne = dc.search(base, filter, sc);

Exception:

Error: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C09030B, comment:
AcceptSecurityContext error, data 525, v893]
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308:
LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 525,
v893]
at
com.sun.jndi.ldap.LdapReferralContext.<init>(LdapReferralContext.java:74)
at
com.sun.jndi.ldap.LdapReferralException.getReferralContext(LdapReferralExcep
tion.java:132)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1823)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1734)
at
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.ja
va:368)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeD
irContext.java:328)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeD
irContext.java:313)
at
javax.naming.directory.InitialDirContext.search(InitialDirContext.java:238)
at LDAPReferralTest.main(LDAPReferralTest.java:79)

Man sieht, daß der Fehler in einer Instanz der Klasse "LdapReferralContext"
auftritt. Kann jemand helfen? Gibt es Workarounds?

MfG,

0 new messages