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

noreply at shibboleth.net noreply at shibboleth.net
Mon Jul 29 17:00:42 EDT 2013


Author: scantor
Date: Mon Jul 29 17:00:41 2013
New Revision: 4629

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4629&view=rev
Log:
IDP-293: basic-auth extractor

Added:
    trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuth.java
      - copied, changed from r4617, trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthorizationHeader.java
    trunk/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthTest.java   (with props)
Modified:
    trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthorizationHeader.java

Copied: trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuth.java (from r4617, trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthorizationHeader.java)
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuth.java?p2=trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuth.java&p1=trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthorizationHeader.java&r1=4617&r2=4629&rev=4629&view=diff
==============================================================================
--- trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthorizationHeader.java (original)
+++ trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuth.java Mon Jul 29 17:00:41 2013
@@ -20,48 +20,73 @@
 import java.util.Enumeration;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.servlet.http.HttpServletRequest;
 
 import net.shibboleth.idp.authn.AbstractAuthenticationAction;
 import net.shibboleth.idp.authn.AuthenticationException;
+import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.UsernamePasswordContext;
-import net.shibboleth.idp.profile.ActionSupport;
 
+import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.codec.Base64Support;
 import net.shibboleth.utilities.java.support.collection.Pair;
-import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.springframework.webflow.execution.Event;
-import org.springframework.webflow.execution.RequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Charsets;
 import com.google.common.net.HttpHeaders;
 
 /**
- * A stage that extracts a username and password from the HTTP {@link HttpHeaders#AUTHORIZATION} header. This stage
- * would generally be used after the {@link SendBasicHttpAuthenticationChallenge} but should be usable by anything that
- * properly populates the HTTP header.
+/**
+ * An action that extracts a username and password from the HTTP {@link HttpHeaders#AUTHORIZATION} header,
+ * creates a {@link UsernamePasswordContext}, and attaches it to the {@link AuthenticationContext}.
+ * 
+ * @event {@link org.opensaml.profile.action.EventIds#PROCEED_EVENT_ID}
+ * @event {@link AuthnEventIds#NO_CREDENTIALS}
+ * @event {@link AuthnEventIds#INVALID_CREDENTIALS}
+ * @pre <pre>ProfileRequestContext.getSubcontext(AuthenticationContext.class, false) != null</pre>
+ * @post If ProfileRequestContext.getHttpRequest() != null, the content of the {@link HttpHeaders#AUTHORIZATION}
+ * header is parsed and any correctly-encoded information will be attached via a {@link UsernamePasswordContext}.
  */
-public class ExtractUsernamePasswordFromBasicAuthorizationHeader extends AbstractAuthenticationAction {
+public class ExtractUsernamePasswordFromBasicAuth extends AbstractAuthenticationAction {
 
+    /** Class logger. */
+    private final Logger log = LoggerFactory.getLogger(ExtractUsernamePasswordFromBasicAuth.class);
+    
     /** {@inheritDoc} */
-    protected Event doExecute(@Nonnull final RequestContext springRequestContext,
-            @Nonnull final ProfileRequestContext profileRequestContext,
+    protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext,
             @Nonnull final AuthenticationContext authenticationContext) throws AuthenticationException {
 
-        final String encodedCredentials = extractAuthorizationCredentials(
-                Constraint.isNotNull(profileRequestContext.getHttpRequest(), "HttpServletRequest cannot be null"));
-        final Pair<String, String> decodedCredentials = decodeAuthorizationCredentials(encodedCredentials);
-
+        final HttpServletRequest request = profileRequestContext.getHttpRequest();

[... 132 lines stripped ...]


More information about the commits mailing list