It wouldn't really work but it's not working today anyway, we return an error when external content is passed in an entry. That would change to silently ignoring it for a checkout.
In the case of AD2 it's the AD2 client that's lazy and just reuses the full Atom entry it retrieved with a GET to then do the checkout. Consider this a workaround for broken clients, that does not penalize non-broken ones :) Florent On Mon, Nov 22, 2010 at 4:35 PM, Florian Müller <[email protected]> wrote: > If we remove the exception, a document would be created without content. > Wouldn't that be confusing? It wouldn't really "work". > > - Florian > > On 22/11/2010 15:32, Florent Guillaume wrote: >> >> I understand the security implications in implementing this and I >> agree it shouldn't be done at least by default. >> My question was more along the lines of: is it ok if I remove the >> thrown exception so that OpenCMIS-based servers can work with AD2? >> >> Florent >> >> >> On Mon, Nov 22, 2010 at 3:44 PM, Florian Müller >> <[email protected]> wrote: >>> >>> Hi Florent, >>> >>> I intentionally didn't implement that features because there are too many >>> difficult questions. >>> What basically happens here is that the CMIS repository connects to a >>> HTTP server to get the content. >>> >>> - In many enterprise environments that's not possible because of >>> firewalls. The server can't talk to an arbitrary host for security reasons. >>> >>> - If the content is hosted on a client machine, it is even more unlikely >>> since desktop firewalls will prevent that. >>> >>> - Should the CMIS repository forward the given credentials to the HTTP >>> server? Hell, no, that would be a security hole. But, yes, it has to >>> authenticate in order to get access to the content... >>> >>> - If we forward the credentials, we really, really should use HTTPS. Do >>> we accept self-signed certificates? Probably not. Does the HTTP server >>> running on a users laptop has a real certificate installed? Probably not. >>> >>> - What if the credentials for the CMIS repository and the HTTP server are >>> different? A very likely scenario... >>> >>> - What if the credentials are not user/password based and we can't >>> forward them because we don't know them? >>> >>> >>> I don't know how to provide a generic external content implementation, >>> but I'm open for ideas... >>> >>> >>> - Florian >>> >>> >>> On 22/11/2010 10:44, Florent Guillaume wrote: >>>> >>>> Hi, >>>> >>>> Adobe Drive 2 does the following when you request a checkout: >>>> >>>> POST /.../repo/checkedout >>>> Content-Type: application/atom+xml;type=entry >>>> >>>> <atom:entry xmlns:atom="http://www.w3.org/2005/Atom"> >>>> ... >>>> <atom:content >>>> >>>> src="http://localhost.../.../repo/content?id=5f8a7a2e-6175-4111-84a3-f70e2d83702e" >>>> type="image/jpeg" /> >>>> <cmisra:object >>>> xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"> >>>> ... >>>> </cmisra:object> >>>> ... >>>> </atom:entry> >>>> >>>> In particular it provides a content src (the one from the entry >>>> itself), which OpenCMIS doesn't like: >>>> HTTP/1.1 405 Method Not Allowed >>>> >>>> This is due to code in AtomEntryParser.parseAtomContent: >>>> } else if (ATTR_SRC.equals(attrName.getLocalPart())) { >>>> throw new CmisNotSupportedException("External content >>>> not supported!"); >>>> } >>>> >>>> I'm not sure this is the right thing to do here, can we just ignore >>>> this external content? >>>> >>>> Florent >>>> >>>> >>>> >>> >>> >> >> >> > > -- Florent Guillaume, Director of R&D, Nuxeo Open Source, Java EE based, Enterprise Content Management (ECM) http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87
