This section shows all the basic steps which are required to setup a Unicore/X and UVOS to work in PULL mode. Important fact to note here (and in case of PUSH mode too) is how the user's group membership is encoded as an XACML attribute. Currently it is an attribute of string type (so DataType="http://www.w3.org/2001/XMLSchema#string") with its name (AttributeId) equal to urn:SAML:voprofile:group. The example policy below uses this attribute.
Note that there are two scenarios described. Many administrators might be interested in the 2nd one.
In this scenario we will use UVOS to perform fine grained and centralized authorization of grid users. Required steps are:
uas.security.attributes.order=SAML-PULL XUUDB uas.security.attributes.combiningPolicy=MERGE_LAST_OVERRIDES # ... here goes xuudb configuration uas.security.attributes.SAML-PULL.class=eu.unicore.uas.security.vo.SAMLPullAuthoriser
vo.uudb.group=/Math-VO/UUDB/SiteA vo.truststore=conf/votruststore.jks vo.truststoreType=JKS vo.truststorePass=the!server vo.localServerURI=http://example.org:7777 # ########################## # PULL mode configuration # ########################## vo.pull.enable=true vo.pull.enableGenericAttributes=true vo.pull.cacheTtl=20 vo.pull.voHost=uvos.example.org vo.pull.voPort=2443 vo.pull.voPath= vo.pull.verifySignatures=false vo.pull.xlogin=true vo.pull.role=true vo.pull.enableTrustDelegation=true
<Rule RuleId="AcceptTSF" Effect="Permit">
<Description>
Accept selected users to reach TSF
</Description>
<Target>
<Subjects>
<AnySubject />
</Subjects>
<Resources>
<Resource>
<ResourceMatch
MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI"
>TargetSystemFactoryService</AttributeValue>
<ResourceAttributeDesignator
DataType="http://www.w3.org/2001/XMLSchema#anyURI"
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" />
</ResourceMatch>
</Resource>
</Resources>
<Actions>
<AnyAction />
</Actions>
</Target>
<Condition FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only">
<SubjectAttributeDesignator
DataType="http://www.w3.org/2001/XMLSchema#string"
AttributeId="role" />
</Apply>
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">user</AttributeValue>
</Apply>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of-all">
<Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal"/>
<SubjectAttributeDesignator
DataType="http://www.w3.org/2001/XMLSchema#string"
AttributeId="urn:SAML:voprofile:group" />
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/Example-VO</AttributeValue>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/Math-VO/UUDB/SiteA</AttributeValue>
</Apply>
</Apply>
</Condition>
</Rule>
In this scenario we will use UVOS to store in central point mappings of certificates to UNIX logins (Xlogins) and roles of of our users. Basically speaking this is a somewhat simpler version of the first scenario (which was additionally configuring arbitrary authZ attributes). To do so:
It is good to test a configuration with a VO Push test utility available in Unicore/X.