Page tree
Skip to end of metadata
Go to start of metadata

Template Attribute Definition

A template attribute definition uses the Velocity Template Language to construct values from its dependencies.

Note that at present, it is only safe/useful to use a DataConnector as a dependency to this plugin. Using an AttributeDefinition as a dependency (no matter the type) will produce very confusing results.

1. Define the Definition

The definition is defined with the element <resolver:AttributeDefinition xsi:type="Template" xmlns="urn:mace:shibboleth:2.0:resolver:ad"> with the following required attribute:

  • id - assigns a unique, within the resolver, identifier that may be used to reference this definition

and the following optional attributes:

  • dependencyOnly - a boolean flag that indicates the attribute produced by this definition is used only by other resolver components and should not be released from the resolver (default value: false)
Basic Template Attribute Definition
<resolver:AttributeDefinition xsi:type="Template" xmlns="urn:mace:shibboleth:2.0:resolver:ad"
                              id="UNIQUE_ID">

     <!-- Remaining configuration from the next step go here -->

</resolver:AttributeDefinition>

2. Define Dependencies

It is very common for one component, like attribute definitions, within the attribute resolver to depend on information retrieved or constructed from another component.

Dependencies are expressed by the <resolver:Dependency> with a ref attribute whose value is the unique ID of the data connector that this connector depends on.

Basic Template Attribute Definition with Dependencies
<resolver:AttributeDefinition xsi:type="Template" xmlns="urn:mace:shibboleth:2.0:resolver:ad"
                              id="UNIQUE_ID">

     <resolver:Dependency ref="CONNECTOR_ID_1" />
     <resolver:Dependency ref="CONNECTOR_ID_1" />

     <!-- Remaining configuration from the next step go here -->

</resolver:AttributeDefinition>

3. Define Template and Source Attributes

Template attribute definitions require one or more <SourceAttribute> elements to define which attributes from the connector's dependencies will be made available to the template engine. Note, every source attribute must have the same number of values.

The template is defined using a single <Template> element. If no template is defined, a default template is used which combines all source attributes into a space-delimited list.

The following example demonstrates constructing eduCourseOffering attributes by combining three different attributes obtained from the definition's dependencies.

Basic Template Attribute Definition
<resolver:AttributeDefinition xsi:type="Template" xmlns="urn:mace:shibboleth:2.0:resolver:ad"
                              id="eduCourseOffering">

     <resolver:Dependency ref="myDatabase" />

     <Template>
          <![CDATA[
               http://example.edu/courses/${academic_term}/${course_id}/${course_section}
          ]]>
     </Template>

     <SourceAttribute>academic_term</SourceAttribute>
     <SourceAttribute>course_id</SourceAttribute>
     <SourceAttribute>course_section</SourceAttribute>

</resolver:AttributeDefinition>
  • No labels