----- "Mark Eggers" <its_toas...@yahoo.com> wrote:

> Reading your original request, you're using an external certificate to
> go
> against your LDAP server, right?
> 
> If so, you might try using Felix's code, and then adding
> authentication="EXTERNAL" to the Realm configuration.
> 
> Your JNDIRealm configuration would then end up looking like:
> 
> <Realm className="org.apache.catalina.realm.JNDIRealm"
>        connectionURL="ldap://mail.brainsware.org:389/";
>        alternateURL="ldap://mail.esotericsystems.at:389";
>        commonRole="admin"
>        connectionName="uid=whatever"
>        connectionPassword="securityisgreat."
>        userBase="ou=people,dc=brainsware,dc=org"
>        userPattern="(uid={0})(postOfficeBox=internal_projects)"
>        startTLS="true"
>        authentication="EXTERNAL"
>        userSearch="(uid={0})" />
> 
> That is, if I'm reading the StartTLS tutorial, Realm configuration
> docs, and
> org.apache.catalina.realm.JNDIRealm.java code correctly . . .

Doing that gets us a step closer:

 INFO: Starting Servlet Engine: Apache Tomcat/6.0.0-dev
Aug 15, 2010 9:07:17 PM org.apache.catalina.realm.JNDIRealm open
WARNING: Exception performing authentication
javax.naming.AuthenticationNotSupportedException: [LDAP: error code 7 - 
SASL(-4): no mechanism available: ]
        at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3023)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2978)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2780)
        at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2694)
        at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:306)
        at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193)
        at 
com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:211)
        at 
com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154)
        at 
com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84)
        at 
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
        at 
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
        at javax.naming.InitialContext.init(InitialContext.java:240)
        at javax.naming.InitialContext.<init>(InitialContext.java:214)
        at 
javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:99)
        at org.apache.catalina.realm.JNDIRealm.open(JNDIRealm.java:1981)
        at org.apache.catalina.realm.JNDIRealm.start(JNDIRealm.java:2086)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1037)
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:519)
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 15, 2010 9:07:17 PM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start: 
LifecycleException:  Exception opening directory server connection:  
javax.naming.AuthenticationNotSupportedException: [LDAP: error code 7 - 
SASL(-4): no mechanism available: ]
        at org.apache.catalina.realm.JNDIRealm.start(JNDIRealm.java:2088)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1037)
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:519)
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 15, 2010 9:07:17 PM org.apache.catalina.startup.Catalina start


This, and wireshark:

r...@iris ~ # tshark  host 188.40.115.116 
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
  0.000000 188.40.115.116 -> 188.40.115.121 TCP 46674 > ldap [SYN] Seq=0 
Win=5840 Len=0 MSS=1460 TSV=1145805160 TSER=0 WS=7
  0.000000 188.40.115.121 -> 188.40.115.116 TCP ldap > 46674 [SYN, ACK] Seq=0 
Ack=1 Win=5792 Len=0 MSS=1460 TSV=54357595 TSER=1145805160 WS=7
  0.000000 188.40.115.116 -> 188.40.115.121 TCP 46674 > ldap [ACK] Seq=1 Ack=1 
Win=5888 Len=0 TSV=1145805161 TSER=54357595
  0.044000 188.40.115.116 -> 188.40.115.121 LDAP bindRequest(1) "<ROOT>" 
[Malformed Packet]
  0.044000 188.40.115.121 -> 188.40.115.116 TCP ldap > 46674 [ACK] Seq=1 Ack=27 
Win=5888 Len=0 TSV=54357606 TSER=1145805171
  0.044000 188.40.115.121 -> 188.40.115.116 LDAP bindResponse(1) 
authMethodNotSupported (SASL(-4): no mechanism available: ) 
  0.044000 188.40.115.116 -> 188.40.115.121 TCP 46674 > ldap [ACK] Seq=27 
Ack=49 Win=5888 Len=0 TSV=1145805171 TSER=54357606
  0.044000 188.40.115.116 -> 188.40.115.121 TCP 46674 > ldap [FIN, ACK] Seq=27 
Ack=49 Win=5888 Len=0 TSV=1145805171 TSER=54357606
  0.044000 188.40.115.121 -> 188.40.115.116 TCP ldap > 46674 [FIN, ACK] Seq=49 
Ack=28 Win=5888 Len=0 TSV=54357606 TSER=1145805171
  0.044000 188.40.115.116 -> 188.40.115.121 TCP 46674 > ldap [ACK] Seq=28 
Ack=50 Win=5888 Len=0 TSV=1145805171 TSER=54357606

Suggests that we're now really trying to do SASL Authentication.

I'll try the suggestions in his other Email, and see how far that gets me.

> Another approach to using Felix's code is to create a separate class, 
> put it in
> a jar, and then add that jar to $CATALINA_HOME/lib. You'll  have to
> add an
> MBeans descriptor as well. How to do all that is documented:
> 
> (Realm)
> http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#Overview
> (MBeans)
> http://tomcat.apache.org/tomcat-6.0-doc/mbeans-descriptor-howto.html
> 
> That way you'll have a generic Tomcat instead of a patched version.

That sure would be a way, but I think it would be much cooler
if Tomcat where to support this official LDAP standard.
Even httpd does it:
http://httpd.apache.org/docs/current/mod/mod_ldap.html#usingssltls


> . . . just my two cents
> 
> /mde/
bye,
i

-- 
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.ga...@brainsware.org
URL: http://brainsware.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to