Hi,
I'm trying to authenticate my slide users via LDAP and ApacheDS (
http://incubator.apache.org/directory/subprojects/apacheds/).
I've downloaded release 0.8 of ApacheDS and I didn't make any real changes
(just added some users with the newuser.ldif example). I'm trying to use
the administrators role which is by default present in ApacheDS and the
user akarasulu/Alex Karasulu (which is by default in the administrators
group).
When I start slide, everything goes fine, but when I login, i get an error
message and a stack trace with a javax.naming.CommunicationException. I'm
not sure whether my LDAP configuration for slide is correct. That's why
I'm posting it on this mailing list and not on the ApacheDS list.
- Can somebody please help me out?
- Is my configuration doamin.xml correct?
- Is this an ApacheDS problem?
I've added the stacktrace i got in the Slide console and my domain.xml
I've enabled auto versioning and authentication in slide. In web.xml I 've
added the same lines for administrators, where 'root' was used (to get
the administrators group of LDAP working).
I'm using with Jaas org.apache.slide.jaas.spi.SlideLoginModule.
=============
20 Jan 2005 10:49:23 - org.apache.slide.store.txjndi.JNDIPrincipalStore -
ERROR
- JNDIPrincipalStore[/users]: Error retrieving /users/akarasulu
javax.naming.CommunicationException: connection closed [Root exception is
java.io.IOException: connection closed]; remaining name
'ou=users,ou=system'
at com.sun.jndi.ldap.LdapCtx.doSearch(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown
Source)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at javax.naming.directory.InitialDirContext.search(Unknown Source)
at
org.apache.slide.store.txjndi.JNDIPrincipalStore.getObject(JNDIPrincipalStore.java:781)
at
org.apache.slide.store.txjndi.JNDIPrincipalStore.retrieveObject(JNDIPrincipalStore.java:466)
at
org.apache.slide.store.AbstractStore.retrieveObject(AbstractStore.java:611)
at
org.apache.slide.store.ExtendedStore.retrieveObject(ExtendedStore.java:585)
at
org.apache.slide.security.SecurityImpl.getPrincipal(SecurityImpl.java:1004)
at
org.apache.slide.jaas.spi.SlideLoginModule.login(SlideLoginModule.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.access$000(Unknown
Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokeModule(Unknown
Source)
at javax.security.auth.login.LoginContext.login(Unknown Source)
at
org.mortbay.jaas.JAASUserRealm.authenticate(JAASUserRealm.java:212)
at
org.mortbay.http.BasicAuthenticator.authenticated(BasicAuthenticator.java:50)
at
org.mortbay.http.SecurityConstraint.check(SecurityConstraint.java:415)
at
org.mortbay.http.HttpContext.checkSecurityConstraints(HttpContext.java:1551)
at
org.mortbay.jetty.servlet.ServletHttpContext.checkSecurityConstraints(ServletHttpContext.java:134)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:235)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at
org.mortbay.http.HttpConnection.service(HttpConnection.java:790)
at
org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:961)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:807)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:197)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:276)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)
Caused by: java.io.IOException: connection closed
at com.sun.jndi.ldap.LdapClient.ensureOpen(Unknown Source)
at com.sun.jndi.ldap.LdapClient.search(Unknown Source)
... 40 more
[SlideLoginModule] - Failure loading user object
10:49:23.062 WARN!! javax.security.auth.login.LoginException: Failure
loading user object
10:49:23.062 WARN!! AUTH FAILURE: user akarasulu
=============
<?xml version="1.0"?>
<slide>
<namespace name="slide">
<definition>
<!-- Use the Tx Stores for the main store.
JNDIPrincipalStore *cannot* do this -->
<store name="main">
<nodestore
classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
<parameter
name="rootpath">main/store/metadata</parameter>
<parameter
name="workpath">main/work/metadata</parameter>
</nodestore>
<securitystore>
<reference store="nodestore"/>
</securitystore>
<lockstore>
<reference store="nodestore"/>
</lockstore>
<revisiondescriptorsstore>
<reference store="nodestore"/>
</revisiondescriptorsstore>
<revisiondescriptorstore>
<reference store="nodestore"/>
</revisiondescriptorstore>
<contentstore
classname="org.apache.slide.store.txfile.TxFileContentStore">
<parameter
name="rootpath">main/store/content</parameter>
<parameter
name="workpath">main/work/content</parameter>
</contentstore>
</store>
<!-- Use a JNDIPrincipalStore to for users -->
<store name="users">
<nodestore
classname="org.apache.slide.store.txjndi.JNDIPrincipalStore">
<parameter
name="jndi.container">ou=users,ou=system</parameter>
<parameter
name="jndi.attributes.rdn">cn</parameter>
<parameter
name="jndi.search.attributes">groupMembership,cn</parameter>
<parameter
name="jndi.attributes.userprincipalname">uid</parameter>
<parameter
name="jndi.search.filter">(objectClass=inetOrgPerson)</parameter>
<parameter
name="jndi.search.scope">ONELEVEL_SCOPE</parameter>
<parameter
name="jndi.search.attributes">cn</parameter>
<parameter
name="java.naming.provider.url">ldap://david:389</parameter>
<parameter
name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</parameter>
<parameter
name="java.naming.security.principal">uid=admin,ou=system</parameter>
<parameter
name="java.naming.security.credentials">secret</parameter>
<parameter
name="java.naming.security.authentication">simple</parameter>
<parameter
name="cache.refresh.checkrate">15</parameter>
<parameter
name="cache.refresh.rate">800</parameter>
<parameter
name="cache.refresh.threshold">15000</parameter>
</nodestore>
<securitystore
classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
<reference store="nodestore"/>
</securitystore>
<lockstore>
<reference store="nodestore"/>
</lockstore>
<revisiondescriptorsstore>
<reference store="nodestore"/>
</revisiondescriptorsstore>
<revisiondescriptorstore>
<reference store="nodestore"/>
</revisiondescriptorstore>
<contentstore>
<reference store="nodestore"/>
</contentstore>
</store>
<!-- Use a JNDIPrincipalStore for roles -->
<store name="roles">
<nodestore
classname="org.apache.slide.store.txjndi.JNDIPrincipalStore">
<parameter
name="jndi.container">ou=groups,ou=system</parameter>
<parameter
name="jndi.attributes.rdn">uid</parameter>
<parameter
name="jndi.attributes.groupmemberset">uniquemember</parameter>
<parameter
name="jndi.search.filter">(objectClass=groupofuniquenames)</parameter>
<parameter
name="jndi.search.scope">ONELEVEL_SCOPE</parameter>
<parameter
name="jndi.search.attributes">cn</parameter>
<parameter
name="java.naming.provider.url">ldap://david:389</parameter>
<parameter
name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</parameter>
<parameter
name="java.naming.security.principal">uid=admin,ou=system</parameter>
<parameter
name="java.naming.security.authentication">simple</parameter>
<parameter
name="java.naming.security.credentials">secret</parameter>
<parameter
name="cache.refresh.checkrate">15</parameter>
<parameter
name="cache.refresh.rate">800</parameter>
<parameter
name="cache.refresh.threshold">15000</parameter>
</nodestore>
<securitystore
classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
<reference store="nodestore"/>
</securitystore>
<lockstore>
<reference store="nodestore"/>
</lockstore>
<revisiondescriptorsstore>
<reference store="nodestore"/>
</revisiondescriptorsstore>
<revisiondescriptorstore>
<reference store="nodestore"/>
</revisiondescriptorstore>
<contentstore>
<reference store="nodestore"/>
</contentstore>
</store>
<!-- Mount each store at the appropriate URI -->
<scope match="/" store="main"/>
<scope match="/users" store="users"/>
<scope match="/roles" store="roles"/>
</definition>
<configuration>
<read-object>/actions/read</read-object>
<create-object>/actions/write</create-object>
<remove-object>/actions/write</remove-object>
<grant-permission>/actions/write-acl</grant-permission>
<revoke-permission>/actions/write-acl</revoke-permission>
<read-permissions>/actions/read-acl</read-permissions>
<read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions>
<lock-object>/actions/write</lock-object>
<kill-lock>/actions/unlock</kill-lock>
<read-locks>/actions/read</read-locks>
<read-revision-metadata>/actions/read</read-revision-metadata>
<create-revision-metadata>/actions/write-properties</create-revision-metadata>
<modify-revision-metadata>/actions/write-properties</modify-revision-metadata>
<remove-revision-metadata>/actions/write-properties</remove-revision-metadata>
<read-revision-content>/actions/read</read-revision-content>
<create-revision-content>/actions/write-content</create-revision-content>
<modify-revision-content>/actions/write-content</modify-revision-content>
<remove-revision-content>/actions/write-content</remove-revision-content>
<bind-member>/actions/bind</bind-member>
<unbind-member>/actions/unbind</unbind-member>
<userspath>/users</userspath>
<rolespath>/roles</rolespath>
<actionspath>/actions</actionspath>
<filespath>/files</filespath>
<parameter name="dav">true</parameter>
<parameter name="standalone">true</parameter>
<parameter name="acl_inheritance_type">path</parameter>
<parameter name="nested_roles_maxdepth">0</parameter>
</configuration>
<data>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/">
<!-- Make sure the subject here is a valid LDAP
group -->
<permission action="all"
subject="/roles/administrators" inheritable="true"/>
<permission action="/actions/read-acl"
subject="all" inheritable="true" negative="true"/>
<permission action="/actions/write-acl"
subject="all" inheritable="true" negative="true"/>
<permission action="/actions/unlock"
subject="all" inheritable="true" negative="true"/>
<permission action="/actions/read"
subject="all" inheritable="true"/>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/users">
<permission action="all"
subject="self" inheritable="true"/>
<permission action="all"
subject="unauthenticated" inheritable="true" negative="true"/>
</objectnode>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/roles">
<permission action="all"
subject="self" inheritable="true"/>
<permission action="all"
subject="unauthenticated" inheritable="true" negative="true"/>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions">
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions/read">
<revision>
<property
name="privilege-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href
xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]></property>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions/read-acl">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode"
uri="/actions/read-current-user-privilege-set">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions/write">
<revision>
<property
name="privilege-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href
xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href
xmlns:D='DAV:'>/actions/write-content</D:href>]]></property>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode"
uri="/actions/write-acl">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode"
uri="/actions/write-properties">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode"
uri="/actions/write-content">
<revision>
<property
name="privilege-member-set"><![CDATA[<D:href
xmlns:D='DAV:'>/actions/bind</D:href> <D:href
xmlns:D='DAV:'>/actions/unbind</D:href>]]></property>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions/bind">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions/unbind">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
<objectnode
classname="org.apache.slide.structure.ActionNode" uri="/actions/unlock">
<revision>
<property
name="privilege-member-set"/>
</revision>
</objectnode>
</objectnode>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/files">
<permission action="all"
subject="unauthenticated" inheritable="true"/>
<!-- Make sure the subject here is
a valid LDAP group -->
<!--<permission action="/actions/write"
subject="/roles/connect users" inheritable="true"/>-->
<permission action="/actions/write"
subject="/roles/administrators" inheritable="true"/>
<permission
action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/history">
<permission action="all"
subject="unauthenticated" inheritable="true"/>
<!-- Make sure the subject here is
a valid LDAP group -->
<permission action="/actions/write"
subject="/roles/administrators" inheritable="true"/>
<permission
action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/workspace">
<permission action="all"
subject="unauthenticated" inheritable="true"/>
<!-- Make sure the subject here is
a valid LDAP group -->
<permission action="/actions/write"
subject="/roles/administrators" inheritable="true"/>
<permission
action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
<objectnode
classname="org.apache.slide.structure.SubjectNode" uri="/workingresource">
<permission action="all"
subject="unauthenticated" inheritable="true"/>
<!-- Make sure the subject here is a valid
LDAP group -->
<permission action="/actions/write"
subject="/roles/administrators" inheritable="true"/>
<permission
action="/actions/read-acl" subject="owner" inheritable="true"/>
</objectnode>
</objectnode>
</data>
</namespace>
<parameter name="historypath">/history</parameter>
<parameter name="workspacepath">/workspace</parameter>
<parameter name="workingresourcepath">/workingresource</parameter>
<parameter name="auto-version">checkout-checkin</parameter>
<parameter name="auto-version-control">false</parameter>
<parameter name="versioncontrol-exclude"/>
<parameter name="checkout-fork">forbidden</parameter>
<parameter name="checkin-fork">forbidden</parameter>
</slide>
--------------------------------------------------
Inventive Designers' Email Disclaimer:
http://www.inventivedesigners.com/email-disclaimer
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]