I eventually opted for having all the data streams managed, mostly due 
to an unpredictable structure of the source URIs.
It is good to know that I can have the HTTP auth option though. I was 
also testing Fedora's capabilities...
Thanks,
Stefano


On 5/16/13 11:17 AM, [email protected] 
wrote:
>
> Stefano,
>
> I assume that some sort of access control in Fedora (a policy) will be
> applied to the Fedora external datastream or object, or that the
> repository itself will not be publicly exposed?  Otherwise, Fedora
> basically becomes an open back window to access content that's protected
> by a locked front door.
>
> I think the primary reason why this issue hasn't come up before is
> because most repository owners have direct control over the objects
> within their repository, and can manage the authnz architecture to suit
> their own needs.  If you have some degree of control over who can access
> the images on the backend webserver, then the simplest solution would be
> to configure the backend web server to allow requests from the Fedora
> host to pass through unimpeded, using IP access control.
>
> I took a look at the source code, and the method that makes the actual
> request is
>
> https://github.com/fcrepo/fcrepo/blob/master/fcrepo-server/src/main/java/org/fcrepo/server/storage/DefaultExternalContentManager.java
>
> line 280:  private MIMETypedStream getFromWeb(ContentManagerParams params)
>
> Rich is correct:  populating ContentManagerParams would get the
> credentials injected for you.  I don't recall how those parameters get
> populated, though.
>
> Turning debug logging on will give you  *a lot* of information about the
> handling of the request.
>
> -- Scott
>
> On 05/09/2013 04:02 PM, Stefano Cossu wrote:
>> @Scott: I can't afford to have this datastream managed by Fedora,
>> because  it's several megabytes large and there are over a million of them.
>>
>> @Rich: the http://user@pass:/resource syntax works with cURL too, that's
>> why I gave it a shot even though I don't know what Fedora actually uses
>> to connect to remote servers.
>> Your source link is very interesting though. I'll give it a look. I
>> wonder how this hasn't been brought up before. Accessing resources
>> through authentication seems like quite a common task to me, and I hoped
>> I could do it without hacking the Fedora code.
>>
>> Thanks
>> sc
>>
>>
>> Stefano Cossu
>> Director of Application Services, Collections
>>
>> The Art Institute of Chicago
>> 116 S. Michigan Ave.
>> Chicago, IL 60603
>> 312-499-4026
>>
>>
>> On 5/9/13 3:45 PM, [email protected] wrote:
>>> Send Fedora-commons-users mailing list submissions to
>>>     [email protected]
>>>
>>> To subscribe or unsubscribe via the World Wide Web, visit
>>>     https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>> or, via email, send a message with subject or body 'help' to
>>>     [email protected]
>>>
>>> You can reach the person managing the list at
>>>     [email protected]
>>>
>>> When replying, please edit your Subject line so it is more specific
>>> than "Re: Contents of Fedora-commons-users digest..."
>>>
>>>
>>> Today's Topics:
>>>
>>>       1. Re: [NEWBIE] Accessing external resource with HTTP
>>>          authentication (Benjamin Armintor)
>>>
>>>
>>> ----------------------------------------------------------------------
>>>
>>> Message: 1
>>> Date: Thu, 9 May 2013 16:45:16 -0400
>>> From: Benjamin Armintor <[email protected]>
>>> Subject: Re: [fcrepo-user] [NEWBIE] Accessing external resource with
>>>     HTTP    authentication
>>> To: "Support and info exchange list for Fedora users."
>>>     <[email protected]>
>>> Message-ID:
>>>     <cadqq8tpfxo8va7ub2ncb6xvbjzcbf1s7unu7hftcqhpntwb...@mail.gmail.com>
>>> Content-Type: text/plain; charset="iso-8859-1"
>>>
>>> Yes, in that sense it would be straightforward- though this question of
>>> where the credentials would be stored was one of things that derailed the
>>> feature in the first place!
>>>
>>>
>>> On Thu, May 9, 2013 at 4:40 PM, Rich d'Rich <[email protected]> wrote:
>>>
>>>> AFAIK the username:password@ syntax is a browser artefact that the Java
>>>> HTTP access libraries (apache commons httpclient) that Fedora uses doesn't
>>>> support.
>>>>
>>>> This also means that you can't do a server-server import where the source
>>>> Fedora server requires authentication, and it causes problems with
>>>> disseminators.
>>>>
>>>> However, looking at the code, most of the "wiring" is there:
>>>>
>>>> https://github.com/fcrepo/fcrepo/blob/master/fcrepo-server/src/main/java/org/fcrepo/server/access/DefaultAccess.java
>>>>
>>>> it just needs getDatastreamDissemination (around line 1145) to extract a
>>>> username and password from somewhere and put it into ContentManagerParams.
>>>> Ideally, there would be a configured table of known external servers and
>>>> credentials that could be kept secure so passwords aren't bandied about.
>>>>
>>>> I may be wrong though and there's already a way to do this :-)
>>>>
>>>>
>>>> On 10 May 2013 06:36, Scott Prater <[email protected]> wrote:
>>>>
>>>>> Stefano --
>>>>>
>>>>> Are you ingesting the datastreams as managed datastreams, or as redirect
>>>>> or external datastreams?
>>>>>
>>>>> If the former, once Fedora ingests the FOXML, the object is referred to
>>>>> by its internal Fedora URI, and no source URLs or passwords are exposed
>>>>> in any object export.
>>>>>
>>>>> If the datastreams are managed, then you may want to take a compromise
>>>>> approach: fetch them to the local machine using curl or some such tool,
>>>>> then ingest the local file.  Once it's ingested, you can delete the
>>>>> local file.
>>>>>
>>>>> Managed datastreams are usually preferred to external or redirect
>>>>> datastreams;  there are use cases for external and redirect datastreams
>>>>> (which is why they exist), but the normal case is to store datastreams
>>>>> as managed.
>>>>>
>>>>> -- Scott
>>>>>
>>>>> On 05/09/2013 01:08 PM, Benjamin Armintor wrote:
>>>>>> Stefano-
>>>>>>       I remember some conversation a couple of years ago about supporting
>>>>>> BASIC auth in services, but as far as I know they didn't go anywhere.
>>>>>>      Maybe another committer remembers something?  In any case, I don't 
>>>>>> see
>>>>>> why storing the credentials like that wouldn't work, if you can accept
>>>>>> the plain-text issues you cite.
>>>>>>
>>>>>> As far as certs, Im afraid you're on your own.  I will warn you that
>>>>>> Java errs on the side of verification unless you instruct it not to, so
>>>>>> invalid certs will cause other problems.
>>>>>>
>>>>>> - Ben
>>>>>>
>>>>>>
>>>>>> On Thu, May 9, 2013 at 12:32 PM, Stefano Cossu <[email protected]
>>>>>> <mailto:[email protected]>> wrote:
>>>>>>
>>>>>>        Hi there,
>>>>>>        I'm starting to tinker with Fedora and trying to write a CMA
>>>>> workflow.
>>>>>>        I'm building a digital object that should grab an image datastream
>>>>> from
>>>>>>        an HTTPS server which requires basic authentication.
>>>>>>        I tried inserting the authentication data in the URL for the
>>>>> datastream,
>>>>>>        but now I have 2 problems:
>>>>>>        1) Username and password are stored in plain text in the FOXML,
>>>>> visible
>>>>>>        by everyone who looks up that record in Fedora, as well as all 
>>>>>> over
>>>>> the
>>>>>>        logs.
>>>>>>        2) I still can't connect to the server this way. The server's
>>>>>>        certificate is expired, I don't know if that plays a role.
>>>>>>
>>>>>>        Fedora throws this error:
>>>>>>
>>>>>>        ERROR 2013-05-09 11:04:28.618 [http-8080-1] (BaseRestResource)
>>>>>>        Unexpected error fulfilling REST API request
>>>>>>        org.fcrepo.server.errors.HttpServiceNotFoundException:
>>>>>>        [DefaultExternalContentManager] returned an error.  The underlying
>>>>> error
>>>>>>        was a org.fcrepo.server.errors.GeneralException  T
>>>>>>        he message was  "Error getting
>>>>>>        https://username:password@imageserver/myHugePicture"; .
>>>>>>                  at
>>>>>>
>>>>> org.fcrepo.server.storage.DefaultExternalContentManager.getExternalContent(DefaultExternalContentManager.java:152)
>>>>>>        ~[fcrepo-server-3.6.2.jar:na]
>>>>>>                  at
>>>>>>
>>>>> org.fcrepo.server.access.DefaultAccess.getDatastreamDissemination(DefaultAccess.java:1148)
>>>>>>        ~[fcrepo-server-3.6.2.jar:na]
>>>>>>                  at
>>>>>>
>>>>> org.fcrepo.server.rest.DatastreamResource.getDatastream(DatastreamResource.java:247)
>>>>>>        ~[fcrepo-server-3.6.2.jar:na]
>>>>>>        [...]
>>>>>>
>>>>>>        And the image server's Apache error log:
>>>>>>
>>>>>>        Thu May 09 11:04:25 2013] [info] [client 10.80.25.47] Connection 
>>>>>> to
>>>>>>        child 0 established (server imageserver:443)
>>>>>>        [Thu May 09 11:04:25 2013] [info] Seeding PRNG with 144 bytes of
>>>>> entropy
>>>>>>        [Thu May 09 11:04:25 2013] [info] [client 10.80.25.47] SSL library
>>>>> error
>>>>>>        1 in handshake (server imageserver:443)
>>>>>>        [Thu May 09 11:04:25 2013] [info] SSL Library Error: 336151608
>>>>>>        error:14094438:SSL routines:SSL3_READ_BYTES:tlsv1 alert internal
>>>>> error
>>>>>>        [Thu May 09 11:04:25 2013] [info] [client 10.80.25.47] Connection
>>>>> closed
>>>>>>        to child 0 with abortive shutdown (server imageserver:443)
>>>>>>        [...]
>>>>>>
>>>>>>        Of course, I can always use a redirect datastream and let the 
>>>>>> client
>>>>>>        deal with authentication and SSL, but I'd like to hide the source
>>>>> URI if
>>>>>>        possible.
>>>>>>
>>>>>>
>>>>>>        Below is the FOXML representation of my object:
>>>>>>
>>>>>>        <foxml:digitalObject VERSION="1.1" PID="test:dervPub_obj"
>>>>>>        xsi:schemaLocation="info:fedora/fedora-system:def/foxml#
>>>>>>        http://www.fedora.info/definitions/1/0/foxml1-1.xsd";>
>>>>>>              <foxml:objectProperties>
>>>>>>                  <foxml:property
>>>>>>        NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/>
>>>>>>                  <foxml:property
>>>>>>        NAME="info:fedora/fedora-system:def/model#label" 
>>>>>> VALUE="Disseminator
>>>>>>        object"/>
>>>>>>                  <foxml:property
>>>>>>        NAME="info:fedora/fedora-system:def/model#ownerId"
>>>>> VALUE="fedoraAdmin"/>
>>>>>>                  <foxml:property
>>>>>>        NAME="info:fedora/fedora-system:def/model#createdDate"
>>>>>>        VALUE="2013-05-09T15:37:41.708Z"/>
>>>>>>                  <foxml:property
>>>>>>        NAME="info:fedora/fedora-system:def/view#lastModifiedDate"
>>>>>>        VALUE="2013-05-09T15:37:41.892Z"/>
>>>>>>              </foxml:objectProperties>
>>>>>>              <foxml:datastream ID="AUDIT" STATE="A" CONTROL_GROUP="X"
>>>>>>        VERSIONABLE="false">
>>>>>>                  <foxml:datastreamVersion ID="AUDIT.0" LABEL="Audit Trail
>>>>> for
>>>>>>        this object" CREATED="2013-05-09T15:37:41.708Z" 
>>>>>> MIMETYPE="text/xml"
>>>>>>        FORMAT_URI="info:fedora/fedora-system:format/xml.fedora.audit">
>>>>>>                      <foxml:xmlContent>
>>>>>>                          <audit:auditTrail>
>>>>>>                              <audit:record ID="AUDREC1">
>>>>>>                                  <audit:process type="Fedora API-M"/>
>>>>>>        <audit:action>addDatastream</audit:action>
>>>>>>        <audit:componentID>SOURCE_IMG</audit:componentID>
>>>>>>        <audit:responsibility>fedoraAdmin</audit:responsibility>
>>>>>>        <audit:date>2013-05-09T15:37:41.892Z</audit:date>
>>>>>>                                  <audit:justification/>
>>>>>>                              </audit:record>
>>>>>>                          </audit:auditTrail>
>>>>>>                      </foxml:xmlContent>
>>>>>>                  </foxml:datastreamVersion>
>>>>>>              </foxml:datastream>
>>>>>>              <foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X"
>>>>>>        VERSIONABLE="true">
>>>>>>                  <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core
>>>>> Record
>>>>>>        for this object" CREATED="2013-05-09T15:37:41.708Z"
>>>>> MIMETYPE="text/xml"
>>>>>>        FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/";
>>>>> SIZE="388">
>>>>>>                      <foxml:xmlContent>
>>>>>>                          <oai_dc:dc
>>>>>>        xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
>>>>>>        http://www.openarchives.org/OAI/2.0/oai_dc.xsd";>
>>>>>>                              <dc:title>Disseminator object</dc:title>
>>>>>>        <dc:identifier>test:dervPub_obj</dc:identifier>
>>>>>>                          </oai_dc:dc>
>>>>>>                      </foxml:xmlContent>
>>>>>>                  </foxml:datastreamVersion>
>>>>>>              </foxml:datastream>
>>>>>>              <foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X"
>>>>>>        VERSIONABLE="false">
>>>>>>                  <foxml:datastreamVersion ID="RELS-EXT.0"
>>>>> LABEL="Relationships"
>>>>>>        CREATED="2013-05-09T15:37:41.837Z" MIMETYPE="application/rdf+xml"
>>>>>>        FORMAT_URI="info:fedora/fedora-system:FedoraRELSExt-1.0" 
>>>>>> SIZE="273">
>>>>>>                      <foxml:xmlContent>
>>>>>>                          <rdf:RDF>
>>>>>>                              <rdf:Description
>>>>>>        rdf:about="info:fedora/test:dervPub_obj">
>>>>>>                                  <hasModel
>>>>>>        rdf:resource="info:fedora/test:dervPub_CModel"/>
>>>>>>                              </rdf:Description>
>>>>>>                          </rdf:RDF>
>>>>>>                      </foxml:xmlContent>
>>>>>>                  </foxml:datastreamVersion>
>>>>>>              </foxml:datastream>
>>>>>>              <foxml:datastream ID="SOURCE_IMG" STATE="A" 
>>>>>> CONTROL_GROUP="E"
>>>>>>        VERSIONABLE="true">
>>>>>>                  <foxml:datastreamVersion ID="SOURCE_IMG.0" LABEL="full
>>>>> sized
>>>>>>        image" CREATED="2013-05-09T15:37:41.892Z" MIMETYPE="image/jpeg">
>>>>>>                      <foxml:contentLocation TYPE="URL"
>>>>>>        REF="https://username:password@imageserver/myHugePicture"/>
>>>>>>                  </foxml:datastreamVersion>
>>>>>>              </foxml:datastream>
>>>>>>
>>>>>>        I would really appreciate your help.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>>        Learn Graph Databases - Download FREE O'Reilly Book
>>>>>>        "Graph Databases" is the definitive new guide to graph databases 
>>>>>> and
>>>>>>        their applications. This 200-page book is written by three 
>>>>>> acclaimed
>>>>>>        leaders in the field. The early access version is available now.
>>>>>>        Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>>>>>>        _______________________________________________
>>>>>>        Fedora-commons-users mailing list
>>>>>>        [email protected]
>>>>>>        <mailto:[email protected]>
>>>>>>        https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>> Learn Graph Databases - Download FREE O'Reilly Book
>>>>>> "Graph Databases" is the definitive new guide to graph databases and
>>>>>> their applications. This 200-page book is written by three acclaimed
>>>>>> leaders in the field. The early access version is available now.
>>>>>> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Fedora-commons-users mailing list
>>>>>> [email protected]
>>>>>> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>>>>>
>>>>> --
>>>>> Scott Prater
>>>>> Shared Development Group
>>>>> General Library System
>>>>> University of Wisconsin - Madison
>>>>> [email protected]
>>>>> 5-5415
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Learn Graph Databases - Download FREE O'Reilly Book
>>>>> "Graph Databases" is the definitive new guide to graph databases and
>>>>> their applications. This 200-page book is written by three acclaimed
>>>>> leaders in the field. The early access version is available now.
>>>>> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>>>>> _______________________________________________
>>>>> Fedora-commons-users mailing list
>>>>> [email protected]
>>>>> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Learn Graph Databases - Download FREE O'Reilly Book
>>>> "Graph Databases" is the definitive new guide to graph databases and
>>>> their applications. This 200-page book is written by three acclaimed
>>>> leaders in the field. The early access version is available now.
>>>> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>>>> _______________________________________________
>>>> Fedora-commons-users mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>>>
>>>>
>>> -------------- next part --------------
>>> An HTML attachment was scrubbed...
>>>
>>> ------------------------------
>>>
>>> ------------------------------------------------------------------------------
>>> Learn Graph Databases - Download FREE O'Reilly Book
>>> "Graph Databases" is the definitive new guide to graph databases and
>>> their applications. This 200-page book is written by three acclaimed
>>> leaders in the field. The early access version is available now.
>>> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>>>
>>> ------------------------------
>>>
>>> _______________________________________________
>>> Fedora-commons-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>>
>>>
>>> End of Fedora-commons-users Digest, Vol 75, Issue 7
>>> ***************************************************
>>
>> ------------------------------------------------------------------------------
>> Learn Graph Databases - Download FREE O'Reilly Book
>> "Graph Databases" is the definitive new guide to graph databases and
>> their applications. This 200-page book is written by three acclaimed
>> leaders in the field. The early access version is available now.
>> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
>> _______________________________________________
>> Fedora-commons-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>>
>


------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
Fedora-commons-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to