wiki:KualiIDPConfig
Last modified 12 years ago Last modified on 08/16/12 10:36:09
Update UA IdP to release attributes to Kuali Ready v. 2.0 2012-08-06
 
 1.  Determine that the staging IdP on howkan is a working clone of the production IdP
 
 2.  Create attribute resolver for UA ID# scoped (30123456@alaska.edu) in /opt/shibboleth-idp/conf/attribute-resolver.xml
 
     <resolver:AttributeDefinition id="uakPersonID" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad">
 
 <!-- uakPersonID is locally (U Alaska) defined.  -->
 <!-- Looks like ePPN except uses the unchanging ID # assigned in Banner ERP to students and employees -->
 <!-- rather than modifiable netID or UA Username.  format: 30012345@alaska.edu  -->
 
         <resolver:Dependency ref="myLDAP" />
 
 <!-- ID# is bannerid in EDIR LDAP or uaADIdentifier in UA AD (a few users are unique to each source) -->
 
         <resolver:Dependency ref="bannerid" />
         <resolver:Dependency ref="uaADIdentifier" />
 
         <resolver:AttributeEncoder xsi:type="SAML1ScopedString" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
             name="https://iam.alaska.edu/trac/wiki/IamUaArp#uakPersonID" />
 
         <resolver:AttributeEncoder xsi:type="SAML2ScopedString" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
             name="https://iam.alaska.edu/trac/wiki/IamUaArp#uakPersonID" friendlyName="uakPersonID" />
 
         <Script>
 
         <![CDATA[
 
         importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
         importPackage(Packages.org.slf4j);
 
         logger = LoggerFactory.getLogger("edu.internet2.middleware.shibboleth.resolver.Script.scriptTest"); 
         logger.debug("Starting uakPersonID Attribute Resolver Script:");
 
         if (uakPersonID == null) 
      {
                 uakPersonID = new BasicAttribute("uakPersonID");
           }
 
         if (typeof bannerid != "undefined" && bannerid != null && bannerid.getValues().size() != 0)
      {
             logger.debug("EDIR LDAP Values: " + uasystemid.getValues());
             
      for ( i = 0; i < bannerid.getValues().size(); i++ )
           {
                     value = bannerid.getValues().get(i);
                      uakPersonID.getValues().add(new ScopedAttributeValue(value, "alaska.edu"));
                  }
          }
 
         else 
      {
             if (typeof uaADIdentifier != "undefined" && uaADIdentifier != null && uaADIdentifier.getValues().size() != 0)
           {
                      logger.debug("AD LDAP Values: " + uaADIdentifier.getValues());
 
                      for ( i = 0; i < uaADIdentifier.getValues().size(); i++ )
                {
                               value = uaADIdentifier.getValues().get(i);
                               uakPersonID.getValues().add(new ScopedAttributeValue(value, "alaska.edu"));
                           }
                  }
            }
 
         logger.debug("uakPersonID values:" + uakPersonID.getValues());
         logger.debug("Completed uakPersonID Attribute Resolver Script");
 
         ]]>
 
         </Script>
 
     </resolver:AttributeDefinition>
 
 
 3.  Modify attribute filter (/opt/shibboleth-idp/conf/attribute-filter.xml in standard install) to add the the following release policy
 releasing uakPersonID to Kuali Ready staging service.
 <!--   ...   -->
 
      <AttributeFilterPolicy id="releaseToKualiReady">
           <PolicyRequirementRule type="basic:OR">
                <Rule type="basic:AttributeRequesterString" value="https://us.ready-staging.kuali.org/shibboleth-sp"/>
           </PolicyRequirementRule>
           <AttributeRule attributeID="uakPersonID">
 <!--  UA ID #@alaska.edu, like ePPN, but with unchanging UAID# rather than name-based UA Username>     -->
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
          <AttributeRule attributeID="displayName">
              <PermitValueRule xsi:type="basic:ANY" />
           </AttributeRule>
           <AttributeRule attributeID="givenName">
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
          <AttributeRule attributeID="surname">
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
          <AttributeRule attributeID="email">
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
           <AttributeRule attributeID="telephoneNumber">
              <PermitValueRule xsi:type="basic:ANY" />
           </AttributeRule>
      </AttributeFilterPolicy>     
           
 <!--   ...   -->
 
 3.1 Modify local hosts file to point to howkan; test the staging idp by pointing browser to:
      https://us.ready-staging.kuali.org/uaa
      https://us.ready-staging.kuali.org/uaf
      https://us.ready-staging.kuali.org//uas
 
 3.2  Coordinate with Kai Hsieh <kchsieh@berkeley.edu> to verify or correct as needed.
 
 3.3  Comment out the modification to the local hosts file.
 
 4.  Upon successful staging, create service "modification/outage" notice; at scheduled time,
 
 [Need to verify hanin is near enough a clone of heald that it works as production IdP!]
 
      4.1 modify attribute-filter.xml on the hot standby server (hanin) with production version of release policy:
 <!--   ...   -->
 
      <AttributeFilterPolicy id="releaseToKualiReady">
           <PolicyRequirementRule type="basic:OR">
                <Rule type="basic:AttributeRequesterString" value="https://us.ready.kuali.org/shibboleth-sp"/>
           </PolicyRequirementRule>
           <AttributeRule attributeID="uakPersonID">
 <!--  UA ID #@alaska.edu, like ePPN, but with unchanging UAID# rather than name-based UA Username>     -->
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
          <AttributeRule attributeID="displayName">
              <PermitValueRule xsi:type="basic:ANY" />
           </AttributeRule>
           <AttributeRule attributeID="givenName">
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
          <AttributeRule attributeID="surname">
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
          <AttributeRule attributeID="email">
              <PermitValueRule xsi:type="basic:ANY" />
          </AttributeRule>
           <AttributeRule attributeID="telephoneNumber">
              <PermitValueRule xsi:type="basic:ANY" />
           </AttributeRule>
      </AttributeFilterPolicy>     
           
 <!--   ...   -->
 
      4.2 Restart the IdP
 
      3.3 Test by editing /etc/hosts to point idp to hanin, pointing browser to
      https://us.ready-staging.kuali.org/uaa
      https://us.ready-staging.kuali.org/uaf
      https://us.ready-staging.kuali.org//uas
 
 5. If successful, switch equalizer to designate hanin as active, then use same change process on heald
 
 6. Check the new attribute-resolver and attribute-filter.xml file into the subversion repository on iron.