I have "successfully" written my own custom content store that integrates with an existing custom Content Management Application. My CMA exposes methods via an API that I have hooked into under the relevant store methods like retrieveRevisionDescriptor() and retrieveRevisionContent() etc. I put "successfully" in quotes because right now all if the method calls to my Content Management API have a hard coded username variable that's required for each call.
I'm using a third party Servlet filter wrapped around the WebDAV Servlet that's able to put the Windows Active Directory username into the HttpServletRequest Principal object. This works perfectly and wholly unrelated to Slide. I know that it works because the Slide WebDAV Servlet logger writes out the value of HttpServletRequest.getUserPrincipal().getName() to the logs. My final issue is this...How can I get at that User Principal name value when making my content store method calls? I see that the NodeStore, RevisionDescriptorStore, etc objects all extend the Service interface, and in fact my custom store implementation is extending AbstractSimpleService. I see a method in the Service Interface connect(CredentialsToken crdtoken) which is close to what I need. I know that you can get at the name of the User Principal from that class. However, unlike a store implementation built on top of a database, my existing API methods do not really have a connect(), isConnected() equivalent. I do not have a requirement to implement varying access control levels. Either the user specified in the Principal object has full access or none at all on a given URI. I've tried playing around with <auto-create-users> tag in Domain.xml but am still not sure how to get at the value when making the retrieveRevisionDescriptor() and retrieveRevisionContent() methods that make the eventual API calls. And since I'm dealing with a user base of ~1000 people with constantly changing access rights at the existing Content Management Application level, configuring usernames within the Domain.xml is not feasible. Any help is appreciated. Thanks Jonathan