Modified: lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/shibboleth/ShibbolethAuthenticator.java
URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/shibboleth/ShibbolethAuthenticator.java?rev=673403&r1=673402&r2=673403&view=diff
==============================================================================
--- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/shibboleth/ShibbolethAuthenticator.java (original)
+++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/ac/shibboleth/ShibbolethAuthenticator.java Wed Jul 2 07:34:12 2008
@@ -27,9 +27,10 @@
import javax.servlet.http.HttpServletRequest;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.environment.Context;
@@ -49,10 +50,12 @@
import org.apache.lenya.ac.Role;
import org.apache.lenya.ac.UserManager;
import org.apache.lenya.ac.UserReference;
+import org.apache.lenya.ac.attr.AttributeManager;
+import org.apache.lenya.ac.attr.AttributeRule;
+import org.apache.lenya.ac.attr.AttributeSet;
import org.apache.lenya.ac.impl.DefaultAccessController;
import org.apache.lenya.ac.impl.TransientUser;
import org.apache.lenya.ac.impl.UserAuthenticator;
-import org.apache.lenya.ac.saml.AttributeTranslator;
import org.apache.lenya.ac.saml.UserFieldsMapper;
import org.apache.lenya.cms.cocoon.acting.DelegatingAuthorizerAction;
import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
@@ -64,6 +67,7 @@
import org.apache.shibboleth.AssertionConsumerService;
import org.apache.shibboleth.AttributeRequestService;
import org.apache.shibboleth.impl.AssertionConsumerServiceImpl;
+import org.opensaml.SAMLAttribute;
import org.opensaml.SAMLBrowserProfile.BrowserProfileResponse;
/**
@@ -74,23 +78,29 @@
* Configuration:
* </p>
* <ul>
- * <li> <code><redirect-to-wayf>true|false</redirect-to-wayf></code> -
- * if the application should redirect to the WAYF server instead of the login
- * screen if a resource is protected only via group rules </li>
+ * <li> <code><redirect-to-wayf>true|false</redirect-to-wayf></code> - if the
+ * application should redirect to the WAYF server instead of the login screen if a resource is
+ * protected only via group rules </li>
*
* </pre>
*/
-public class ShibbolethAuthenticator extends UserAuthenticator implements Configurable {
+public class ShibbolethAuthenticator extends UserAuthenticator implements Parameterizable,
+ Disposable {
protected static final String PREVIOUSLY_REDIRECTED_USER = ShibbolethAuthenticator.class
.getName()
+ "previouslyRedirectedUser";
/**
- * Configuration option to determine if the WAYF server should be used for
- * logging in to rule-only protected pages.
+ * Configuration parameter to determine if the WAYF server should be used for logging in to
+ * rule-only protected pages.
*/
- protected static final String REDIRECT_TO_WAYF = "redirect-to-wayf";
+ protected static final String PARAM_REDIRECT_TO_WAYF = "redirect-to-wayf";
+
+ /**
+ * Configuration parameter to determine the attribute translator for this authenticator.
+ */
+ protected static final String PARAM_ATTRIBUTE_SET = "attribute-set";
protected static final String ERROR_MISSING_UID_ATTRIBUTE = "Unable to get unique identifier for subject. "
+ "Make sure you are listed in the metadata.xml "
@@ -98,15 +108,17 @@
+ "are available and your are allowed to see them. (Resourceregistry).";
private boolean redirectToWayf = false;
+ private String attributeSetHint = null;
+
+ private AttributeManager attributeManager;
+ private AttributeSet attributeSet;
/**
- * Authenticates the request. If the request contains the parameters
- * <em>username</em> and <em>password</em>, the authentication is
- * delegated to the super class {@link UserAuthenticator}. Otherwise, the
- * Shibboleth browser profile request is evaluated.
+ * Authenticates the request. If the request contains the parameters <em>username</em> and
+ * <em>password</em>, the authentication is delegated to the super class
+ * {@link UserAuthenticator}. Otherwise, the Shibboleth browser profile request is evaluated.
* @see org.apache.lenya.ac.impl.UserAuthenticator#authenticate(org.apache.lenya.ac.AccreditableManager,
- * org.apache.cocoon.environment.Request,
- * org.apache.lenya.ac.ErrorHandler)
+ * org.apache.cocoon.environment.Request, org.apache.lenya.ac.ErrorHandler)
*/
public boolean authenticate(AccreditableManager accreditableManager, Request request,
ErrorHandler handler) throws AccessControlException {
@@ -209,10 +221,9 @@
}
/**
- * Passes the attributes from the <em>samlAttributes</em> parameter to the
- * <em>user</em> object. The {@link AttributeTranslator}�service is
- * used to translate the attributes. The name and e-mail attributes are
- * extracted using the {@link UserFieldsMapper}.
+ * Passes the attributes from the <em>samlAttributes</em> parameter to the <em>user</em>
+ * object. The {@link AttributeTranslator} service is used to translate the attributes. The name
+ * and e-mail attributes are extracted using the {@link UserFieldsMapper}.
* @param user
* @param samlAttributes
* @throws AccessControlException
@@ -220,24 +231,13 @@
protected void passAttributes(TransientUser user, Map samlAttributes)
throws AccessControlException {
- Map translatedAttributes;
-
- AttributeTranslator translator = null;
- try {
- translator = (AttributeTranslator) this.manager.lookup(AttributeTranslator.ROLE);
- translatedAttributes = translator.translateAttributes(samlAttributes, false);
- } catch (ServiceException e) {
- throw new RuntimeException(e);
- } finally {
- if (translator != null) {
- this.manager.release(translator);
- }
- }
-
- for (Iterator keys = translatedAttributes.keySet().iterator(); keys.hasNext();) {
- String key = (String) keys.next();
- String[] values = (String[]) translatedAttributes.get(key);
- user.setAttributeValues(key, values);
+ for (Iterator i = samlAttributes.keySet().iterator(); i.hasNext();) {
+ String key = (String) i.next();
+ AttributeSet attrs = getAttributeSet();
+ String alias = attrs.getAttribute(key).getAlias();
+ SAMLAttribute attribute = (SAMLAttribute) samlAttributes.get(key);
+ String[] values = getValues(attribute);
+ user.setAttributeValues(alias, values);
}
UserFieldsMapper mapper = new UserFieldsMapper(this.manager, samlAttributes);
@@ -252,9 +252,17 @@
}
}
+ protected String[] getValues(SAMLAttribute attribute) {
+ List valueList = new ArrayList();
+ for (Iterator i = attribute.getValues(); i.hasNext();) {
+ String value = (String) i.next();
+ valueList.add(value);
+ }
+ return (String[]) valueList.toArray(new String[valueList.size()]);
+ }
+
/**
- * Extracts the <code>HttpServletRequest</code> object from the current
- * Cocoon context.
+ * Extracts the <code>HttpServletRequest</code> object from the current Cocoon context.
* @return An <code>HttpServletRequest</code> object.
* @throws AccessControlException
*/
@@ -280,10 +288,10 @@
* This method returns the URI which displays the login screen:
* </p>
* <ul>
- * <li>If the configuration option {@link #REDIRECT_TO_WAYF} is set to
- * <code>true</code> and the request points to a page which is only
- * protected by rules, we assume that the Shibboleth authentication shall be
- * used and return the URL which redirects to the WAYF server.</li>
+ * <li>If the configuration option {@link #PARAM_REDIRECT_TO_WAYF} is set to <code>true</code>
+ * and the request points to a page which is only protected by rules, we assume that the
+ * Shibboleth authentication shall be used and return the URL which redirects to the WAYF
+ * server.</li>
* <li>Otherwise, the Lenya login usecase URL is returned.</li>
* </ul>
* @return A string.
@@ -291,10 +299,11 @@
*/
public String getLoginUri(Request request) {
String loginUri = null;
-
+
if (this.redirectToWayf && isOnlyRuleProtected(request)) {
-
- // avoid redirect loop (WAYF->IdP->SP->WAYF) because of failing authorization
+
+ // avoid redirect loop (WAYF->IdP->SP->WAYF) because of failing
+ // authorization
ShibbolethUserReference user = getLoggedInShibboletUser(request);
if (user != null) {
String userId = user.getId();
@@ -302,8 +311,7 @@
if (previouslyRedirectedUserId != null && userId.equals(previouslyRedirectedUserId)) {
reportAuthorizationError(request);
loginUri = super.getLoginUri(request);
- }
- else {
+ } else {
setPreviouslyRedirectedUser(request, userId);
}
}
@@ -320,7 +328,8 @@
protected void reportAuthorizationError(Request request) {
Session session = request.getSession();
Message[] messages = (Message[]) session.getAttribute(DelegatingAuthorizerAction.ERRORS);
- List messageList = messages == null ? new ArrayList(1) : new ArrayList(Arrays.asList(messages));
+ List messageList = messages == null ? new ArrayList(1) : new ArrayList(Arrays
+ .asList(messages));
messageList.add(new Message("shibboleth-delete-cookies"));
messages = (Message[]) messageList.toArray(new Message[messageList.size()]);
request.getSession().setAttribute(DelegatingAuthorizerAction.ERRORS, messages);
@@ -331,14 +340,12 @@
}
protected String getPreviouslyRedirectedUser(Request request) {
- return (String) request.getSession()
- .getAttribute(PREVIOUSLY_REDIRECTED_USER);
+ return (String) request.getSession().getAttribute(PREVIOUSLY_REDIRECTED_USER);
}
/**
* @param request The current request.
- * @return A Shibboleth user reference or <code>null</code> if no
- * Shiboleth user is logged in.
+ * @return A Shibboleth user reference or <code>null</code> if no Shiboleth user is logged in.
*/
protected ShibbolethUserReference getLoggedInShibboletUser(Request request) {
Session session = request.getSession(false);
@@ -394,10 +401,9 @@
* Checks if a page is protected only with rules:
* </p>
* <ul>
- * <li> If the aggregated policy for the current page contains credentials
- * which assign a role to a particular user or IP range, or to a group which
- * contains explicitly assigned members, the method returns
- * <code>false</code>. </li>
+ * <li> If the aggregated policy for the current page contains credentials which assign a role
+ * to a particular user or IP range, or to a group which contains explicitly assigned members,
+ * the method returns <code>false</code>. </li>
* <li> Otherwise, the method returns <code>true</code>.
* </ul>
* @param request The request referring to the page.
@@ -436,8 +442,8 @@
return false;
}
Group group = (Group) accr;
- String rule = group.getRule();
- if (rule == null || rule.trim().length() == 0 || group.getMembers().length > 0) {
+ AttributeRule rule = group.getRule();
+ if (rule == null || rule.getRule().trim().length() == 0 || group.getMembers().length > 0) {
return false;
}
}
@@ -459,20 +465,12 @@
}
}
- public void configure(Configuration config) throws ConfigurationException {
- Configuration redirectConfig = config.getChild(REDIRECT_TO_WAYF, false);
- if (redirectConfig != null) {
- this.redirectToWayf = redirectConfig.getValueAsBoolean();
- }
- }
-
/**
* <p>
- * This method returns the URL of the protected page, as passed from the
- * identity provider as the value of the
- * {@link AssertionConsumerServiceImpl#REQ_PARAM_TARGET} request parameter.
- * If the request parameter is missing, the current URL, i.e. the assertion
- * consumer URL, is returned.
+ * This method returns the URL of the protected page, as passed from the identity provider as
+ * the value of the {@link AssertionConsumerServiceImpl#REQ_PARAM_TARGET} request parameter. If
+ * the request parameter is missing, the current URL, i.e. the assertion consumer URL, is
+ * returned.
* </p>
* @see org.apache.lenya.ac.impl.UserAuthenticator#getTargetUri(org.apache.cocoon.environment.Request)
*/
@@ -488,4 +486,28 @@
}
}
+ public void parameterize(Parameters params) throws ParameterException {
+ this.redirectToWayf = params.getParameterAsBoolean(PARAM_REDIRECT_TO_WAYF,
+ this.redirectToWayf);
+ this.attributeSetHint = params.getParameter(PARAM_ATTRIBUTE_SET, this.attributeSetHint);
+ }
+
+ public AttributeSet getAttributeSet() {
+ if (this.attributeSet == null) {
+ try {
+ this.attributeManager = (AttributeManager) this.manager.lookup(AttributeManager.ROLE);
+ this.attributeSet = this.attributeManager.getAttributeSet(this.attributeSetHint);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return this.attributeSet;
+ }
+
+ public void dispose() {
+ if (this.attributeManager != null) {
+ this.manager.release(this.attributeManager);
+ }
+ }
+
}
Modified: lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/lenya.roles
URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/lenya.roles?rev=673403&r1=673402&r2=673403&view=diff
==============================================================================
--- lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/lenya.roles (original)
+++ lenya/branches/branch_1_2_x_shibboleth/src/java/org/apache/lenya/lenya.roles Wed Jul 2 07:34:12 2008
@@ -63,10 +63,6 @@
<hint shorthand="publication" class="org.apache.lenya.cms.ac.PublicationAccessControllerResolver"/>
</role>
- <role name="org.apache.lenya.ac.Authenticator"
- shorthand="authenticator"
- default-class="org.apache.lenya.ac.impl.UserAuthenticator"/>
-
<role name="org.apache.lenya.ac.cache.SourceCache"
shorthand="sourcecache"
default-class="org.apache.lenya.ac.cache.SourceCacheImpl"/>
@@ -75,4 +71,8 @@
shorthand="uriparameterizer"
default-class="org.apache.lenya.cms.cocoon.uriparameterizer.URIParameterizerImpl"/>
+ <role name="org.apache.lenya.ac.attr.AttributeSetSelector"
+ shorthand="attribute-sets"
+ default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
+
</role-list>
Modified: lenya/branches/branch_1_2_x_shibboleth/src/targets/antlr-build.xml
URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/targets/antlr-build.xml?rev=673403&r1=673402&r2=673403&view=diff
==============================================================================
--- lenya/branches/branch_1_2_x_shibboleth/src/targets/antlr-build.xml (original)
+++ lenya/branches/branch_1_2_x_shibboleth/src/targets/antlr-build.xml Wed Jul 2 07:34:12 2008
@@ -21,7 +21,7 @@
<project name="antlr">
<target name="antlr.compile" description="Generate the ANTLR parser for attribute rule evaluation">
- <property name="antlr.package" value="org/apache/lenya/ac/impl/antlr"/>
+ <property name="antlr.package" value="org/apache/lenya/ac/attr/antlr"/>
<mkdir dir="${build.src}/${antlr.package}"/>
<antlr:antlr3 xmlns:antlr="antlib:org/apache/tools/ant/antlr"
target="src/java/${antlr.package}/Expressions.g"
@@ -30,4 +30,4 @@
</antlr:antlr3>
</target>
-</project>
\ No newline at end of file
+</project>
Modified: lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java
URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java?rev=673403&r1=673402&r2=673403&view=diff
==============================================================================
--- lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java (original)
+++ lenya/branches/branch_1_2_x_shibboleth/src/test/org/apache/lenya/ac/impl/RuleEvaluatorTest.java Wed Jul 2 07:34:12 2008
@@ -22,11 +22,11 @@
import junit.framework.TestCase;
import org.apache.avalon.framework.logger.ConsoleLogger;
-import org.apache.lenya.ac.AttributeDefinition;
-import org.apache.lenya.ac.AttributeDefinitionRegistry;
-import org.apache.lenya.ac.AttributeRuleEvaluator;
+import org.apache.lenya.ac.attr.AttributeSet;
+import org.apache.lenya.ac.attr.AttributeSetRegistry;
+import org.apache.lenya.ac.attr.AttributeRuleEvaluator;
+import org.apache.lenya.ac.attr.antlr.AntlrEvaluator;
import org.apache.lenya.ac.file.FileUser;
-import org.apache.lenya.ac.impl.antlr.AntlrEvaluator;
public class RuleEvaluatorTest extends TestCase {
@@ -34,13 +34,13 @@
public void testRuleEvaluation() throws Exception {
- AttributeDefinition def = new AttributeDefinition() {
+ AttributeSet def = new AttributeSet() {
public String[] getAttributeNames() {
String[] names = { ATTR_NAME };
return names;
}
};
- AttributeDefinitionRegistry.register(def);
+ AttributeSetRegistry.register(def);
AttributeRuleEvaluator evaluator = new AntlrEvaluator(new ConsoleLogger());
Modified: lenya/branches/branch_1_2_x_shibboleth/src/webapp/WEB-INF/cocoon-xconf.xsl
URL: http://svn.apache.org/viewvc/lenya/branches/branch_1_2_x_shibboleth/src/webapp/WEB-INF/cocoon-xconf.xsl?rev=673403&r1=673402&r2=673403&view=diff
==============================================================================
--- lenya/branches/branch_1_2_x_shibboleth/src/webapp/WEB-INF/cocoon-xconf.xsl (original)
+++ lenya/branches/branch_1_2_x_shibboleth/src/webapp/WEB-INF/cocoon-xconf.xsl Wed Jul 2 07:34:12 2008
@@ -216,7 +216,8 @@
<authenticators>
<component-instance name="user" class="org.apache.lenya.ac.impl.UserAuthenticator"/>
<component-instance name="shibboleth" class="org.apache.lenya.ac.shibboleth.ShibbolethAuthenticator">
- <redirect-to-wayf>true</redirect-to-wayf>
+ <parameter name="redirect-to-wayf" value="true"/>
+ <parameter name="attribute-set" value="switch"/>
</component-instance>
<component-instance name="anonymous" class="org.apache.lenya.ac.impl.AnonymousAuthenticator"/>
</authenticators>
@@ -234,8 +235,8 @@
class="org.apache.lenya.cms.cocoon.components.context.ContextUtility"/>
<component logger="lenya.ac.attributeruleevaluator"
- role="org.apache.lenya.ac.AttributeRuleEvaluatorFactory"
- class="org.apache.lenya.ac.impl.antlr.AntlrEvaluatorFactory"/>
+ role="org.apache.lenya.ac.attr.AttributeRuleEvaluatorFactory"
+ class="org.apache.lenya.ac.attr.antlr.AntlrEvaluatorFactory"/>
<!-- Shibboleth -->
@@ -293,47 +294,49 @@
<LanguageParamName>YOUR_PARAM_NAME</LanguageParamName>
</component>
- <component logger="lenya.ac.saml"
- role="org.apache.lenya.ac.saml.AttributeTranslator"
- class="org.apache.lenya.ac.saml.impl.AttributeTranslatorImpl">
- <!--
- Attributes to translate for easier reading/handling within Lenya.
- Attributes will be available by their translated name (outName) within Lenya.
- -->
- <Attribute inName="urn:mace:dir:attribute-def:eduPersonEntitlement" outName="eduPersonEntitlement" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonUniqueID" outName="swissEduPersonUniqueID" />
- <Attribute inName="urn:mace:dir:attribute-def:sn" outName="surname" />
- <Attribute inName="urn:mace:dir:attribute-def:givenName" outName="givenName" />
- <Attribute inName="urn:mace:dir:attribute-def:mail" outName="mail" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonHomeOrganization" outName="swissEduPersonHomeOrganization" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonHomeOrganizationType" outName="swissEduPersonHomeOrganizationType" />
- <Attribute inName="urn:mace:dir:attribute-def:eduPersonAffiliation" outName="eduPersonAffiliation" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonStudyBranch1" outName="swissEduPersonStudyBranch1" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonStudyBranch2" outName="swissEduPersonStudyBranch2" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonStudyBranch3" outName="swissEduPersonStudyBranch3" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonStudyLevel" outName="swissEduPersonStudyLevel" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:swissEduPersonStaffCategory" outName="swissEduPersonStaffCategory" />
- <Attribute inName="urn:mace:switch.ch:attribute-def:eduPersonOrgUnitDN" outName="eduPersonOrgUnitDN" />
- <Attribute inName="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" outName="eduPersonScopedAffiliation" />
- <Attribute inName="urn:mace:dir:attribute-def:postalAddress" outName="postalAddress" />
- <Attribute inName="urn:mace:dir:attribute-def:swissEduPersonGender" outName="swissEduPersonGender" />
- <Attribute inName="urn:mace:dir:attribute-def:employeeNumber" outName="employeeNumber" />
- <Attribute inName="urn:mace:dir:attribute-def:ou" outName="organizationalUnit" />
- <Attribute inName="urn:mace:dir:attribute-def:eduPersonPrincipalName" outName="eduPersonPrincipalName"/>
+ <attribute-sets>
+ <component-instance name="switch" class="org.apache.lenya.ac.attr.impl.AttributeSetImpl">
+ <!--
+ Attributes to translate for easier reading/handling within Lenya.
+ Attributes will be available by their translated name (alias) within Lenya.
+ -->
+ <Attribute name="urn:mace:dir:attribute-def:eduPersonEntitlement" alias="eduPersonEntitlement" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonUniqueID" alias="swissEduPersonUniqueID" />
+ <Attribute name="urn:mace:dir:attribute-def:sn" alias="surname" />
+ <Attribute name="urn:mace:dir:attribute-def:givenName" alias="givenName" />
+ <Attribute name="urn:mace:dir:attribute-def:mail" alias="mail" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonHomeOrganization" alias="swissEduPersonHomeOrganization" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonHomeOrganizationType" alias="swissEduPersonHomeOrganizationType" />
+ <Attribute name="urn:mace:dir:attribute-def:eduPersonAffiliation" alias="eduPersonAffiliation" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonStudyBranch1" alias="swissEduPersonStudyBranch1" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonStudyBranch2" alias="swissEduPersonStudyBranch2" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonStudyBranch3" alias="swissEduPersonStudyBranch3" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonStudyLevel" alias="swissEduPersonStudyLevel" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:swissEduPersonStaffCategory" alias="swissEduPersonStaffCategory" />
+ <Attribute name="urn:mace:switch.ch:attribute-def:eduPersonOrgUnitDN" alias="eduPersonOrgUnitDN" />
+ <Attribute name="urn:mace:dir:attribute-def:eduPersonScopedAffiliation" alias="eduPersonScopedAffiliation" />
+ <Attribute name="urn:mace:dir:attribute-def:postalAddress" alias="postalAddress" />
+ <Attribute name="urn:mace:dir:attribute-def:swissEduPersonGender" alias="swissEduPersonGender" />
+ <Attribute name="urn:mace:dir:attribute-def:employeeNumber" alias="employeeNumber" />
+ <Attribute name="urn:mace:dir:attribute-def:ou" alias="organizationalUnit" />
+ <Attribute name="urn:mace:dir:attribute-def:eduPersonPrincipalName" alias="eduPersonPrincipalName"/>
+ </component-instance>
- <!-- Mac OS X LDAP attributes -->
- <Attribute inName="apple-generateduid" outName="apple-generateduid"/>
- <Attribute inName="apple-user-authenticationhint" outName="apple-user-authenticationhint"/>
- <Attribute inName="apple-user-picture" outName="apple-user-picture"/>
- <Attribute inName="cn" outName="cn"/>
- <Attribute inName="gidNumber" outName="gidNumber"/>
- <Attribute inName="homeDirectory" outName="homeDirectory"/>
- <Attribute inName="loginShell" outName="loginShell"/>
- <Attribute inName="objectClass" outName="objectClass"/>
- <Attribute inName="uid" outName="uid"/>
- <Attribute inName="uidNumber" outName="uidNumber"/>
- <Attribute inName="userPassword" outName="userPassword"/>
- </component>
+ <component-instance name="macos" class="org.apache.lenya.ac.attr.impl.AttributeSetImpl">
+ <!-- Mac OS X LDAP attributes -->
+ <Attribute name="apple-generateduid" alias="apple-generateduid"/>
+ <Attribute name="apple-user-authenticationhint" alias="apple-user-authenticationhint"/>
+ <Attribute name="apple-user-picture" alias="apple-user-picture"/>
+ <Attribute name="cn" alias="cn"/>
+ <Attribute name="gidNumber" alias="gidNumber"/>
+ <Attribute name="homeDirectory" alias="homeDirectory"/>
+ <Attribute name="loginShell" alias="loginShell"/>
+ <Attribute name="objectClass" alias="objectClass"/>
+ <Attribute name="uid" alias="uid"/>
+ <Attribute name="uidNumber" alias="uidNumber"/>
+ <Attribute name="userPassword" alias="userPassword"/>
+ </component-instance>
+ </attribute-sets>
<!--
<component logger="lenya.ac.shibboleth"
role="org.apache.shibboleth.util.CredentialsManager"
@@ -400,9 +403,9 @@
role="org.apache.shibboleth.saml.ArtifactMapperImpl"
class="org.apache.shibboleth.saml.ArtifactMapperImpl"/>
- <component logger="lenya.ac.shibboleth"
- role="org.apache.lenya.ac.AttributeDefinition"
- class="org.apache.lenya.ac.saml.impl.SamlAttributeDefinition"/>
+ <component logger="lenya.ac.attr"
+ role="org.apache.lenya.ac.attr.AttributeManager"
+ class="org.apache.lenya.ac.attr.impl.AttributeManagerImpl"/>
</xsl:copy>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.