[java-identity-provider COMMIT] in /trunk: idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernam...

noreply at shibboleth.net noreply at shibboleth.net
Wed Nov 20 11:19:30 EST 2013


Author: scantor
Date: Wed Nov 20 11:19:30 2013
New Revision: 4960

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4960&view=rev
Log:
Allow JAAS validator to run against multiple application names at once.

Modified:
    trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstJAAS.java
    trunk/idp-conf/src/main/resources/conf/jaas-authn-config.xml
    trunk/idp-conf/src/main/resources/system/flows/authn/jaas-basic-authn-beans.xml
    trunk/idp-conf/src/main/resources/system/flows/authn/jaas-form-authn-beans.xml

Modified: trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstJAAS.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstJAAS.java?rev=4960&r1=4959&r2=4960&view=diff
==============================================================================
--- trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstJAAS.java (original)
+++ trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUsernamePasswordAgainstJAAS.java Wed Nov 20 11:19:30 2013
@@ -18,6 +18,8 @@
 package net.shibboleth.idp.authn.impl;
 
 import java.security.NoSuchAlgorithmException;
+import java.util.Collections;
+import java.util.List;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -36,9 +38,11 @@
 import net.shibboleth.idp.authn.UsernamePrincipal;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.UsernamePasswordContext;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.opensaml.profile.action.ActionSupport;
@@ -46,6 +50,8 @@
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Lists;
 
 /**
  * An action that checks for a {@link UsernamePasswordContext} and directly produces an
@@ -77,13 +83,13 @@
     /** Type-specific configuration parameters. */
     @Nullable private Configuration.Parameters loginConfigParameters;
     
-    /** Application name in JAAS configuration to use. */
-    @Nonnull @NotEmpty private String loginConfigName;
+    /** Application name(s) in JAAS configuration to use. */
+    @Nonnull @NonnullElements private List<String> loginConfigNames;
     
     /** Constructor. */
     public ValidateUsernamePasswordAgainstJAAS() {
         // For compatibility with V2.
-        loginConfigName = "ShibUserPassAuth";
+        loginConfigNames = Collections.singletonList("ShibUserPassAuth");
     }
     
     /**
@@ -127,23 +133,23 @@
     }
 
     /**
-     * Get the JAAS application name to use.
-     * 
-     * @return the JAAS application name to use
-     */
-    @Nonnull @NotEmpty public String getLoginConfigName() {
-        return loginConfigName;
-    }
-
-    /**
-     * Set the JAAS application name to use.
-     * 
-     * @param name the JAAS application name to use
-     */
-    public void setLoginConfigName(@Nonnull @NotEmpty String name) {
+     * Set the JAAS application name(s) to use.
+     * 
+     * @param names list of JAAS application names to use
+     */
+    public void setLoginConfigNames(@Nonnull @NonnullElements List<String> names) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
         
-        loginConfigName = Constraint.isNotNull(StringSupport.trimOrNull(name), "Name cannot be null or empty");
+        loginConfigNames = Lists.newArrayList();
+        for (String name : Constraint.isNotNull(names, "Configuration name list cannot be null")) {
+            String trimmed = StringSupport.trimOrNull(name);
+            if (trimmed != null) {
+                loginConfigNames.add(trimmed);
+            }
+        }
+        if (loginConfigNames.isEmpty()) {
+            throw new ConstraintViolationException("Configuration name list cannot be empty");
+        }
     }
 
     /** {@inheritDoc} */
@@ -175,14 +181,18 @@
     protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext,
             @Nonnull final AuthenticationContext authenticationContext) throws AuthenticationException {
 
-        try {
-            log.debug("{} attempting to authenticate user {}", getLogPrefix(), upContext.getUsername());
-            authenticate();
-            log.debug("{} login by '{}' succeeded", getLogPrefix(), upContext.getUsername());
-            buildAuthenticationResult(profileRequestContext, authenticationContext);
-        } catch (Exception e) {

[... 96 lines stripped ...]


More information about the commits mailing list