Turbine Framework and LDAP

Thomas Fröhlich <[email protected]> Mon, 26 Apr 2010 11:26:03 +0200
Newsgroups gmane.comp.jakarta.turbine.user
Message-ID <[email protected]>
Hi,

is there anybody out there who uses the Turbine framework together with 
  LDAP or an AD-server? Unfortunately I failed to connect Turbine to our 
AD-server.

I have observed the TCP communication on LDAP port 389 using WIRESHARK. 
The Turbine connect binding works fine but retrieving the TurbineGroup 
informations from LDAP Turbine crashes with an NullPointerException. You 
will find the whole stacktrace and a TCP communication snippet at the 
end of this mail.

The groups TurbineGroupGlobal an TurbineGroupService are LDAP group 
objects expanded by the auxiliary Turbine object turbineGroup. The test 
user "mhernandez" is a LDAP user object expanded by the auxiliary 
Turbine object turbineUser. All required attributes are filled.

I have red all old mailing list entries concerning LDAP. I'm right if I 
assume, that LDAP support isn't finally implemented into Turbine?

Thank you in advance for all hints :)

Kind regards
Thomas Froehlich


************************** snippet stacktrace **************************


2010-04-23 16:23:31,576 [TP-Processor2] ERROR org.apache.turbine.Turbine 
- Turbine.handleException:
org.apache.turbine.util.security.DataBackendException: Failed to build 
ACL for user 'mhernandez'
	at 
org.apache.turbine.services.security.ldap.LDAPSecurityService.getACL(LDAPSecurityService.java:139)
	at 
org.apache.turbine.services.security.TurbineSecurity.getACL(TurbineSecurity.java:444)
	at 
org.apache.turbine.modules.actions.AccessController.doPerform(AccessController.java:99)
	at org.apache.turbine.modules.Action.perform(Action.java:51)
	at org.apache.turbine.modules.ActionLoader.exec(ActionLoader.java:102)
	at org.apache.turbine.Turbine.doGet(Turbine.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
	at 
org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:421)
	at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
	at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
	at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
	at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NullPointerException
	at java.util.TreeMap.compare(TreeMap.java:1093)
	at java.util.TreeMap.put(TreeMap.java:465)
	at org.apache.turbine.util.security.GroupSet.add(GroupSet.java:79)
	at org.apache.turbine.util.security.GroupSet.add(GroupSet.java:98)
	at org.apache.turbine.util.security.GroupSet.<init>(GroupSet.java:66)
	at 
org.apache.turbine.services.security.ldap.LDAPSecurityService.getGroups(LDAPSecurityService.java:470)
	at 
org.apache.turbine.services.security.BaseSecurityService.getAllGroups(BaseSecurityService.java:1164)
	at 
org.apache.turbine.services.security.ldap.LDAPSecurityService.getACL(LDAPSecurityService.java:108)
	... 24 more
2010-04-23 16:51:20,382 [TP-Processor9] ERROR 
org.apache.turbine.services.pull.TurbinePullService - Could not 
instantiate request tool acl from a de.tewisoft.aloe.turbine.ACLTool object
java.lang.NullPointerException
	at java.lang.String.compareTo(String.java:998)
	at java.lang.String.compareTo(String.java:90)
	at java.util.TreeMap.compare(TreeMap.java:1093)
	at java.util.TreeMap.getEntry(TreeMap.java:347)
	at java.util.TreeMap.get(TreeMap.java:265)
	at 
org.apache.turbine.util.security.GroupSet.getGroupByName(GroupSet.java:173)
	at 
org.apache.turbine.services.security.BaseSecurityService.getGlobalGroup(BaseSecurityService.java:961)
	at 
org.apache.turbine.services.security.TurbineSecurity.getGlobalGroup(TurbineSecurity.java:595)
	at 
org.apache.turbine.util.security.TurbineAccessControlList.getPermissions(TurbineAccessControlList.java:148)
	at de.tewisoft.aloe.turbine.ACLTool.init(ACLTool.java:43)
	at 
org.apache.turbine.services.pull.TurbinePullService.initTool(TurbinePullService.java:736)
	at 
org.apache.turbine.services.pull.TurbinePullService.populateWithRequestTools(TurbinePullService.java:456)
	at 
org.apache.turbine.services.pull.TurbinePullService.populateContext(TurbinePullService.java:378)
	at 
org.apache.turbine.services.velocity.TurbineVelocityService.getContext(TurbineVelocityService.java:250)
	at 
org.apache.turbine.services.velocity.TurbineVelocity.getContext(TurbineVelocity.java:122)
	at 
org.apache.turbine.modules.pages.VelocityPage.doBuildBeforeAction(VelocityPage.java:50)
	at 
org.apache.turbine.modules.pages.DefaultPage.doBuild(DefaultPage.java:110)
	at org.apache.turbine.modules.Page.build(Page.java:56)
	at org.apache.turbine.modules.PageLoader.exec(PageLoader.java:104)
	at org.apache.turbine.Turbine.doGet(Turbine.java:796)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
	at 
org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:421)
	at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
	at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
	at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
	at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
	at java.lang.Thread.run(Thread.java:595)


******************* snippet LDAP TCP communication *********************

No.     Time                       Source                Destination 
        Protocol Info
      32 2010-04-23 16:23:31.642312 192.168.20.231        192.168.20.173 
        LDAP     searchResEntry(2) 
"CN=TurbineGroupGlobal,OU=Turbine,OU=myproject,DC=example,DC=com" | 
searchResEntry(2) 
"CN=TurbineGroupService,OU=Turbine,OU=myproject,DC=example,DC=com" | 
searchResDone(2) success  [2 results]

Frame 32 (1840 bytes on wire, 1840 bytes captured)
Ethernet II, Src: fa:a2:57:b8:8f:1b (fa:a2:57:b8:8f:1b), Dst: 
4e:58:d9:f6:61:fd (4e:58:d9:f6:61:fd)
Internet Protocol, Src: 192.168.20.231 (192.168.20.231), Dst: 
192.168.20.173 (192.168.20.173)
Transmission Control Protocol, Src Port: ldap (389), Dst Port: 
turbonote-2 (34249), Seq: 23, Ack: 185, Len: 1774
     Source port: ldap (389)
     Destination port: turbonote-2 (34249)
     [Stream index: 3]
     Sequence number: 23    (relative sequence number)
     [Next sequence number: 1797    (relative sequence number)]
     Acknowledgement number: 185    (relative ack number)
     Header length: 32 bytes
     Flags: 0x18 (PSH, ACK)
     Window size: 66304 (scaled)
     Checksum: 0xaaeb [validation disabled]
     Options: (12 bytes)
     [SEQ/ACK analysis]
     [PDU Size: 873]
     [PDU Size: 879]
     [PDU Size: 22]
Lightweight-Directory-Access-Protocol
     LDAPMessage searchResEntry(2) 
"CN=TurbineGroupGlobal,OU=Turbine,OU=myproject,DC=example,DC=com" [1 result]
         messageID: 2
         protocolOp: searchResEntry (4)
             searchResEntry
                 objectName: 
CN=TurbineGroupGlobal,OU=Turbine,OU=myproject,DC=example,DC=com
                 attributes: 17 items
                     PartialAttributeList item objectClass
                     PartialAttributeList item cn
                     PartialAttributeList item distinguishedName
                     PartialAttributeList item instanceType
                     PartialAttributeList item whenCreated
                     PartialAttributeList item whenChanged
                     PartialAttributeList item uSNCreated
                     PartialAttributeList item uSNChanged
                     PartialAttributeList item name
                     PartialAttributeList item objectGUID
                     PartialAttributeList item objectSid
                     PartialAttributeList item sAMAccountName
                     PartialAttributeList item sAMAccountType
                     PartialAttributeList item groupType
                     PartialAttributeList item objectCategory
                     PartialAttributeList item dSCorePropagationData
                     PartialAttributeList item turbineGroupName
         [Response To: 31]
         [Time: 0.000349000 seconds]
Lightweight-Directory-Access-Protocol
     LDAPMessage searchResEntry(2) 
"CN=TurbineGroupService,OU=Turbine,OU=myproject,DC=example,DC=com" [2 
results]
         messageID: 2
         protocolOp: searchResEntry (4)
             searchResEntry
                 objectName: 
CN=TurbineGroupService,OU=Turbine,OU=myproject,DC=example,DC=com
                 attributes: 17 items
                     PartialAttributeList item objectClass
                     PartialAttributeList item cn
                     PartialAttributeList item distinguishedName
                     PartialAttributeList item instanceType
                     PartialAttributeList item whenCreated
                     PartialAttributeList item whenChanged
                     PartialAttributeList item uSNCreated
                     PartialAttributeList item uSNChanged
                     PartialAttributeList item name
                     PartialAttributeList item objectGUID
                     PartialAttributeList item objectSid
                     PartialAttributeList item sAMAccountName
                     PartialAttributeList item sAMAccountType
                     PartialAttributeList item groupType
                     PartialAttributeList item objectCategory
                     PartialAttributeList item dSCorePropagationData
                     PartialAttributeList item turbineGroupName
         [Response To: 31]
         [Time: 0.000349000 seconds]
Lightweight-Directory-Access-Protocol
     LDAPMessage searchResDone(2) success [2 results]
         messageID: 2
         protocolOp: searchResDone (5)
             searchResDone
                 resultCode: success (0)
                 matchedDN:
                 errorMessage:
         [Response To: 31]
         [Time: 0.000349000 seconds]