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.