Namespace: urn:mace:shibboleth:2.0:resolver
Schema: http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd
...
Get eduPersonPrincipalName
from LDAP or build one from uid
Variant 1: A "Prescoped" AttributeDefinition resolves existing eduPersonPrincipalName
values from LDAP, then depends on a "ScriptedAttribute" definition to generate missing values. The Script also needs a dependency on the myLDAP
DataConnector in order to have access to existing eduPersonPrincipalName
and uid
attribute values.
Minimal scripting, using Dependencies (Nashorn)
Code Block | ||
---|---|---|
| ||
<AttributeDefinition id="eduPersonPrincipalName" xsi:type="Prescoped"> <InputAttributeDefinition ref="eppnFromUid" /> </AttributeDefinition> <AttributeDefinition id="eppnFromUid" xsi:type="ScriptedAttribute" dependencyOnly="true"> <InputDataConnector ref="myLDAP" attributeNames="eduPersonPrincipalName uid" /> <Script><![CDATA[ if (typeof eduPersonPrincipalName == "undefined") eppnFromUid.addValue(uid.getValues().get(0) + "@%{idp.scope}@%example.org"); ]]></Script> </AttributeDefinition> |
...
Code Block | ||
---|---|---|
| ||
<AttributeDefinition id="eduPersonPrincipalName" xsi:type="ScriptedAttribute"> <InputDataConnector ref="myLDAP" attributeNames="eduPersonPrincipalName uid" /> <Script><![CDATA[ logger = Java.type("org.slf4j.LoggerFactory").getLogger("org.example.eppnbuilder"); scopedValueType = Java.type("net.shibboleth.idp.attribute.ScopedStringAttributeValue"); var localpart = ""; if (typeof eduPersonPrincipalName == "undefined" || eduPersonPrincipalName.getValues().size() < 1) { logger.debug("No ePPN in LDAP found, creating one"); localpart = uid.getValues().get(0); } else { logger.debug("ePPN had value: " + eduPersonPrincipalName.getValues().get(0)); localpart = eduPersonPrincipalName.getValues().get(0).split("@")[0]; eduPersonPrincipalName.getValues().retainAll([]); } eduPersonPrincipalName.addValue(new scopedValueType(localpart, "%{idp.scope}example.org")); logger.debug("ePPN final value: " + eduPersonPrincipalName.getValues().get(0)); ]]></Script> </AttributeDefinition> |
...