Deal with case when JAAS modules don't populate any principal data. This isn't reall...
authorlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Thu, 8 Nov 2007 15:20:22 +0000 (15:20 +0000)
committerlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Thu, 8 Nov 2007 15:20:22 +0000 (15:20 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@2455 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/idp/authn/provider/UsernamePasswordLoginServlet.java

index 518206b..92a07bc 100644 (file)
@@ -18,6 +18,7 @@ package edu.internet2.middleware.shibboleth.idp.authn.provider;
 
 import java.io.IOException;
 import java.security.Principal;
+import java.util.Set;
 
 import javax.security.auth.Subject;
 import javax.security.auth.callback.Callback;
@@ -132,15 +133,21 @@ public class UsernamePasswordLoginServlet extends HttpServlet {
             log.debug("Successfully authenticated user {}", username);
 
             Subject subject = jaasLoginCtx.getSubject();
-            Principal principal = subject.getPrincipals().iterator().next();
-            if (DatatypeHelper.isEmpty(principal.getName())) {
+            Set<Principal> principals = subject.getPrincipals();
+
+            if(principals.isEmpty()){
                 request.setAttribute(LoginHandler.PRINCIPAL_NAME_KEY, username);
-            } else {
-                request.setAttribute(LoginHandler.PRINCIPAL_NAME_KEY, principal.getName());
+            }else{       
+                Principal principal = principals.iterator().next();
+                String principalName = DatatypeHelper.safeTrimOrNullString(principal.getName());
+                if(principalName == null){
+                    request.setAttribute(LoginHandler.PRINCIPAL_NAME_KEY, username);
+                }else{
+                    request.setAttribute(LoginHandler.PRINCIPAL_NAME_KEY, principal.getName());
+                }
+                request.setAttribute(LoginHandler.SUBJECT_KEY, jaasLoginCtx.getSubject());
             }
 
-            request.setAttribute(LoginHandler.SUBJECT_KEY, jaasLoginCtx.getSubject());
-
             return true;
         } catch (LoginException e) {
             log.debug("User authentication failed", e);