Properly handle case where authentication fails and control is handed back to profile...
authorlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Wed, 10 Nov 2010 19:56:19 +0000 (19:56 +0000)
committerlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Wed, 10 Nov 2010 19:56:19 +0000 (19:56 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/branches/REL_2@2965 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

doc/RELEASE-NOTES.txt
src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml1/ShibbolethSSOProfileHandler.java
src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java

index e132f64..7f1ccca 100644 (file)
@@ -1,6 +1,7 @@
 Changes in Release 2.2.1
 =============================================
 [SIDP-421] - Error logging SOAP queries
+[SIDP-427] - Incorrect handling of returned authn error in SSO profile handlers
 [SIDP-428] - Address lifecycle issues around use of MetadataCredentialResolverFactory
 [SIDP-431] - Typo in default attribute-resolver.xml
 [SIDP-434] - More Typos in Default attribute-resolver.xml
index 3cc003d..a0799e9 100644 (file)
@@ -123,13 +123,13 @@ public class ShibbolethSSOProfileHandler extends AbstractSAML1ProfileHandler {
         if (loginContext == null) {
             log.debug("Incoming request does not contain a login context, processing as first leg of request");
             performAuthentication(inTransport, outTransport);
-        }else if(!loginContext.isPrincipalAuthenticated()){
-            log.debug("Incoming request contained a login context but principal was not authenticated, processing as first leg of request");
-            performAuthentication(inTransport, outTransport);            
-        } else {
+        }else if(loginContext.isPrincipalAuthenticated() || loginContext.getAuthenticationFailure() != null){
             log.debug("Incoming request contains a login context, processing as second leg of request");
             HttpServletHelper.unbindLoginContext(getStorageService(), servletContext, httpRequest, httpResponse);
             completeAuthenticationRequest(loginContext, inTransport, outTransport);
+        }else {
+            log.debug("Incoming request contained a login context but principal was not authenticated, processing as first leg of request");
+            performAuthentication(inTransport, outTransport);            
         }
     }
 
index 5d90567..b54b082 100644 (file)
@@ -155,13 +155,13 @@ public class SSOProfileHandler extends AbstractSAML2ProfileHandler {
         if (loginContext == null) {
             log.debug("Incoming request does not contain a login context, processing as first leg of request");
             performAuthentication(inTransport, outTransport);
-        }else if(!loginContext.isPrincipalAuthenticated()){
-            log.debug("Incoming request contained a login context but principal was not authenticated, processing as first leg of request");
-            performAuthentication(inTransport, outTransport);            
-        } else {
+        }else if(loginContext.isPrincipalAuthenticated() || loginContext.getAuthenticationFailure() != null){
             log.debug("Incoming request contains a login context, processing as second leg of request");
             HttpServletHelper.unbindLoginContext(getStorageService(), servletContext, httpRequest, httpResponse);
             completeAuthenticationRequest(loginContext, inTransport, outTransport);
+        }else {
+            log.debug("Incoming request contained a login context but principal was not authenticated, processing as first leg of request");
+            performAuthentication(inTransport, outTransport);            
         }
     }