Hi Tomasz Thanks for raising the JIRA issue.
There are a couple of implementation choices for this that I can see 1) have the attributes added by the PEP 2) implement via an AttributeFinderModule. I would tend towards the latter, though implementation via the former might be easier. If you take a look at org.fcrepo.server.security.xacml.pdp.finder.attribute.LDAPAttributeFinder.LD APAttributeFinder in fcrepo-security-pdp you will see an AttributeFinderModule that deals with subject attributes. The attributes are in fact picked up by the JAAS module - see org.fcrepo.server.security.jaas.auth.module.XmlUsersFileModule - you'll see them added around line 213. So the question is how to build some kind of bridge from this to a new AttributeFinderModule. Also you'll see how the current subject attributes are added into the request by the PEP around line 93 of org.fcrepo.server.security.xacml.pep.rest.filters.AbstractFilter - this may give some clues. Though adding them in at this point is option (1) which I think is less preferable to option (2). Whichever is the option, some configuration will be required to map the name given in the fedora-users.xml file to a XACML subject attribute ID> Regards Steve > -----Original Message----- > From: Tomasz Cielecki [mailto:tom...@ostebaronen.dk] > Sent: 15 June 2011 12:50 > To: Support and info exchange list for Fedora users. > Subject: Re: [fcrepo-user] Using information from > datastreamstocreateFeSLpolicies. > > > Hi Stephen, > > Where should I look if I want to take a shot at allowing > access to other subject attributes in FeSL? > > I see there is a lot of related code in fcrepo-security, but > not sure where to start. > > On Wed, Jun 15, 2011 at 8:04 AM, Stephen Bayliss > <stephen.bayl...@acuityunlimited.net> wrote: > > Hi Tomasz > > > >> Being able to only access fedoraRole from FeSL is indeed a barrier! > > > > That is the case currently - if you'd like to be able to > access other > > subject attributes maybe you'd like to raise a JIRA ticket > for this at > > https://jira.duraspace.org/browse/FCREPO? > > > > In the meantime you are restricted to using a fedoraRole to make it > > available as a subject attribute ID > > "urn:fedora:names:fedora:2.1:subject:role" > > > > To expose the target of your relationship as a resource attribute, > > you'll need to define it in > > $FEDORA_HOME/pdp/conf/config-attribute-finder.xml. > > > > You would need something like: > > > > <attribute designator="resource" > > name="http://kemibrug.dk/k2/relations#belongsToOrg" /> > > > > This makes the value of the target of the relationship > available as a > > XACML resource attribute with an ID the same as your relationship > > name; ie "http://kemibrug.dk/k2/relations#belongsToOrg" so > you can use > > this in your policies (in the forthcoming 3.5 release this is > > enhanced, see > > https://wiki.duraspace.org/display/FEDORADEV/FeSL+Authorization - > > particularly you can define the XACML resource attribute ID > > independently of the relationship URI) > > > > I'd recommend you use the same value for your subject attribute (ie > > fedoraRole) as the target of the relationship as this will make the > > comparison in the policy easier. The value type of the resource > > attribute is actually treated as a string (not a URI) so you'd use > > this value as your fedoraRole. > > > > Your policy should contain a Rule element with a Condition > to specify > > the comparison - if you look at the example right at the end of > > > https://wiki.duraspace.org/display/FEDORADEV/FeSL+Authorization this > > should guide you - in your case you'll be comparing the > subject role > > (as per the > > example) with your newly-defined resource attribute ID. > > > > Steve > > > >> -----Original Message----- > >> From: Tomasz Cielecki [mailto:tom...@ostebaronen.dk] > >> Sent: 14 June 2011 16:40 > >> To: Support and info exchange list for Fedora users. > >> Subject: Re: [fcrepo-user] Using information from datastreams > >> tocreateFeSLpolicies. > >> > >> > >> In this case the user with the k2Org attribute with value > 236 would > >> not be allowed to view the ressource with the relation > >> k2rel:belongsToOrg with URI info:fedora/org:243. If it would be > >> easier this could also be stored as a string in the RELS-EXT. > >> > >> Lets say the values matched, then the user would be able > to view the > >> object and its methods. As simple as that. But I don't > understand how > >> to access information stored in RELS-EXT from a FeSL policy. > >> > >> Being able to only access fedoraRole from FeSL is indeed a barrier! > >> > >> On Sat, Jun 11, 2011 at 10:36 PM, Steve Bayliss > >> <stephen.bayl...@acuityunlimited.net> wrote: > >> > Hi Tomasz > >> > > >> > I'm not entirely clear on the policy condition you want to > >> implement. > >> > > >> > I see in your RDF: > >> >> <k2rel:belongsToOrg > >> >> rdf:resource="info:fedora/org:243"/> > >> > > >> > And in your user attributes: > >> >> <attribute name="k2Org"> > >> >> <value>236</value> > >> > > >> > So I'm not clear, as these values are different, what > the condition > >> > would be to allow access. Also one's a URI and one's a string. > >> > > >> > As far as I know (I'll need to look at the code to check), > >> I believe > >> > only fedoraRole subject attributes get passed through to FeSL > >> > currently, so that may be one barrier. > >> > > >> > Regards > >> > Steve > >> > > >> >> -----Original Message----- > >> >> From: Tomasz Cielecki [mailto:tom...@ostebaronen.dk] > >> >> Sent: 10 June 2011 05:26 > >> >> To: Support and info exchange list for Fedora users. > >> >> Subject: Re: [fcrepo-user] Using information from > datastreams to > >> >> createFeSLpolicies. > >> >> > >> >> Hello Stephen, > >> >> > >> >> So lets say I have a note object I talked about with following > >> >> RELS-EXT data stream: <foxml:datastream ID="RELS-EXT" > >> >> CONTROL_GROUP="X"> > >> >> <foxml:datastreamVersion > >> >> FORMAT_URI="info:fedora/fedora-system:FedoraRELSExt-1.0" > >> >> ID="RELS-EXT.0" MIMETYPE="application/rdf+xml" LABEL="RDF > >> Statements > >> >> about this object" SIZE="752" > CREATED="2011-04-01T00:00:00.000Z"> > >> >> <foxml:xmlContent> > >> >> <rdf:RDF > >> >> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > >> >> xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > >> >> xmlns:rel="info:fedora/fedora-system:def/relations-external#" > >> >> xmlns:k2rel="http://kemibrug.dk/k2/relations#" > >> >> xmlns:k2rdf="http://kemibrug.dk/k2/rdf#" > >> >> xmlns:dc="http://purl.org/dc/elements/1.1/" > >> >> xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"> > >> >> <rdf:Description rdf:about="info:fedora/note:78734"> > >> >> <k2rel:belongsToOrg > >> >> rdf:resource="info:fedora/org:243"/> > >> >> <k2rel:belongsToKBA > >> >> rdf:resource="info:fedora/localreg:15989"/> > >> >> <k2rdf:type>31</k2rdf:type> > >> >> <k2rdf:value>R38</k2rdf:value> > >> >> </rdf:Description> > >> >> </rdf:RDF> > >> >> </foxml:xmlContent> > >> >> </foxml:datastreamVersion> > >> >> </foxml:datastream> > >> >> > >> >> Where I now have defined an organisation with the relation > >> >> belongsToOrg. And I have a user with following > attributes: <user > >> >> id="toci"> > >> >> <attribute name="k2Org"> > >> >> <value>236</value> > >> >> </attribute> > >> >> > >> >> <attribute name="k2Host"> > >> >> <value>127.0.0.1</value> > >> >> </attribute> > >> >> > >> >> <attribute name="role"> > >> >> <value>administrator</value> > >> >> </attribute> > >> >> > >> >> <attribute name="fedoraRole"> > >> >> <value>administrator</value> > >> >> </attribute> > >> >> </user> > >> >> > >> >> What should I do to give the user access to the note > >> object by using > >> >> the k2Org in the user attributes? > >> >> > >> >> On Tue, May 31, 2011 at 7:01 PM, Stephen Bayliss > >> >> <stephen.bayl...@acuityunlimited.net> wrote: > >> >> > Hi Tomasz > >> >> > > >> >> > Basing policies directly on XML content (and restricting > >> access to > >> >> > XML > >> >> > content) is part of the XACML 2.0 spec as part of the > >> Hierarchical > >> >> Resource > >> >> > Profile - > >> >> > > >> http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-hier- > >> >> profile-s > >> >> > pec-os.pdf > >> >> > > >> >> > However this is not implemented in FeSL (it would be > >> interesting to > >> >> > know > >> >> if > >> >> > there's a general need for this). > >> >> > > >> >> > It is possible to define XACML Resource attributes based > >> on object > >> >> > and datastream properties that are specified in RELS-EXT and > >> >> > RELS-INT datastreams - the configuration for this is in > >> >> > $FEDORA_HOME/pdp/conf/config-attribute-finder.xml - so > >> if you can > >> >> > get > >> >> your > >> >> > attributes into RELS-EXT/RELS-INT then maybe this is > a solution. > >> >> > > >> >> > The functionality of this has been enhanced for > Fedora 3.5, some > >> >> > draft documentation for this is at > >> >> > > >> https://wiki.duraspace.org/display/FEDORADEV/FeSL+Authorization - > >> >> > this > >> >> may > >> >> > help you as the basic simple relationship-based > attributes are > >> >> > present > >> >> ni > >> >> > Fedora 3.4. > >> >> > > >> >> > FYI there's also some draft documentation on > >> installation for 3.5 > >> >> > at > >> https://wiki.duraspace.org/display/FEDORADEV/FeSL+Installation; > >> >> > feedback welcomed on both of these. > >> >> > > >> >> > Steve > >> >> > > >> >> >> -----Original Message----- > >> >> >> From: Tomasz Cielecki [mailto:tom...@ostebaronen.dk] > >> >> >> Sent: 30 May 2011 14:29 > >> >> >> To: fedora-commons-users@lists.sourceforge.net > >> >> >> Subject: [fcrepo-user] Using information from datastreams to > >> >> >> create FeSLpolicies. > >> >> >> > >> >> >> > >> >> >> Hello fcrepo-users, > >> >> >> > >> >> >> I find it a bit hard to understand how to write > >> policies for FeSL > >> >> >> to authorize against attributes found in an object's > >> data stream. > >> >> >> > >> >> >> For instance I have an object called note:1 which has the DC > >> >> >> record an RELS-EXT record and a data stream called > >> content, which > >> >> >> content is in XML format. > >> >> >> > >> >> >> Is it possible to access data stored in the content > data stream > >> >> >> through a policy? For instance I want to access an > >> organization id > >> >> >> stored in that content data stream, which I want to match a > >> >> >> against a users attributes to see if the user is > >> allowed to access > >> >> >> that object and its related objects. > >> >> >> > >> >> >> Maybe the attributes should be placed elsewhere? How do > >> I access > >> >> >> them? > >> >> >> > >> >> >> If you could be so kind to give me some examples to > >> work with as I > >> >> >> find the ones in the wiki lacking or maybe I am > >> understanding them > >> >> >> incorrectly. > >> >> >> > >> >> >> -- > >> >> >> With Best Regards > >> >> >> Tomasz Cielecki > >> >> >> > >> >> >> > -------------------------------------------------------------- > >> >> >> ---------------- > >> >> >> vRanger cuts backup time in half-while increasing > >> security. With > >> >> >> the market-leading solution for virtual backup and > >> recovery, you > >> >> >> get blazing-fast, flexible, and affordable data protection. > >> >> >> Download your free trial now. > >> >> >> http://p.sf.net/sfu/quest-d2dcopy1 > >> >> >> _______________________________________________ > >> >> >> Fedora-commons-users mailing list > >> >> >> Fedora-commons-users@lists.sourceforge.net > >> >> >> > >> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> >> >> > >> >> > > >> >> > > >> >> > > >> ------------------------------------------------------------------- > >> >> > ----- > >> >> ------ > >> >> > Simplify data backup and recovery for your virtual > >> environment with > >> >> vRanger. > >> >> > Installation's a snap, and flexible recovery options > >> mean your data > >> >> > is > >> >> safe, > >> >> > secure and there when you need it. Data protection > magic? Nope - > >> >> > It's vRanger. Get your free trial download today. > >> >> > http://p.sf.net/sfu/quest-sfdev2dev > >> >> > _______________________________________________ > >> >> > Fedora-commons-users mailing list > >> >> > Fedora-commons-users@lists.sourceforge.net > >> >> > > https://lists.sourceforge.net/lists/listinfo/fedora-commons-user > >> >> > s > >> >> > > >> >> > >> >> > >> >> > >> >> -- > >> >> Med Venlig Hilsen / With Best Regards > >> >> Tomasz Cielecki > >> >> http://ostebaronen.dk > >> >> > >> >> > >> > --------------------------------------------------------------------- > >> >> ----- > >> >> ---- > >> >> EditLive Enterprise is the world's most technically > >> advanced content > >> >> authoring tool. Experience the power of Track Changes, Inline > >> >> Image Editing and ensure content is compliant with Accessibility > >> Checking. > >> >> http://p.sf.net/sfu/ephox-dev2dev > >> >> _______________________________________________ > >> >> Fedora-commons-users mailing list > >> >> Fedora-commons-users@lists.sourceforge.net > >> >> > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> > > >> > > >> > > >> > --------------------------------------------------------------------- > >> - > >> > -------- > >> > EditLive Enterprise is the world's most technically advanced > >> > content authoring tool. Experience the power of Track Changes, > >> > Inline Image Editing and ensure content is compliant with > >> > Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev > >> > _______________________________________________ > >> > Fedora-commons-users mailing list > >> > Fedora-commons-users@lists.sourceforge.net > >> > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> > > >> > >> > >> > >> -- > >> Med Venlig Hilsen / With Best Regards > >> Tomasz Cielecki > >> http://ostebaronen.dk > >> > >> -------------------------------------------------------------- > >> ---------------- > >> EditLive Enterprise is the world's most technically > advanced content > >> authoring tool. Experience the power of Track Changes, > Inline Image > >> Editing and ensure content is compliant with Accessibility > Checking. > >> http://p.sf.net/sfu/ephox-dev2dev > >> _______________________________________________ > >> Fedora-commons-users mailing list > >> Fedora-commons-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> > > > > > > > ---------------------------------------------------------------------- > > -------- > > EditLive Enterprise is the world's most technically advanced content > > authoring tool. Experience the power of Track Changes, Inline Image > > Editing and ensure content is compliant with Accessibility Checking. > > http://p.sf.net/sfu/ephox-dev2dev > > _______________________________________________ > > Fedora-commons-users mailing list > > Fedora-commons-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > > > > > > -- > Med Venlig Hilsen / With Best Regards > Tomasz Cielecki > http://ostebaronen.dk > > -------------------------------------------------------------- > ---------------- > EditLive Enterprise is the world's most technically advanced > content authoring tool. Experience the power of Track > Changes, Inline Image Editing and ensure content is compliant > with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Fedora-commons-users mailing list > Fedora-commons-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > ------------------------------------------------------------------------------ EditLive Enterprise is the world's most technically advanced content authoring tool. Experience the power of Track Changes, Inline Image Editing and ensure content is compliant with Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev _______________________________________________ Fedora-commons-users mailing list Fedora-commons-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fedora-commons-users