diff options
Diffstat (limited to 'jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java')
-rw-r--r-- | jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java b/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java index 67b2f5484b..552b4fab4c 100644 --- a/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java +++ b/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java @@ -54,6 +54,12 @@ public abstract class AbstractLoginModule implements LoginModule private JAASUserInfo currentUser; private Subject subject; + /** + * JAASUserInfo + * + * This class unites the UserInfo data with jaas concepts + * such as Subject and Principals + */ public class JAASUserInfo { private UserInfo user; @@ -62,7 +68,8 @@ public abstract class AbstractLoginModule implements LoginModule public JAASUserInfo (UserInfo u) { - setUserInfo(u); + this.user = u; + this.principal = new JAASPrincipal(u.getUserName()); } public String getUserName () @@ -75,19 +82,7 @@ public abstract class AbstractLoginModule implements LoginModule return this.principal; } - public void setUserInfo (UserInfo u) - { - this.user = u; - this.principal = new JAASPrincipal(u.getUserName()); - this.roles = new ArrayList<JAASRole>(); - if (u.getRoleNames() != null) - { - Iterator<String> itor = u.getRoleNames().iterator(); - while (itor.hasNext()) - this.roles.add(new JAASRole((String)itor.next())); - } - } - + public void setJAASInfo (Subject subject) { subject.getPrincipals().add(this.principal); @@ -106,6 +101,18 @@ public abstract class AbstractLoginModule implements LoginModule { return this.user.checkCredential(suppliedCredential); } + + public void fetchRoles() throws Exception + { + this.user.fetchRoles(); + this.roles = new ArrayList<JAASRole>(); + if (this.user.getRoleNames() != null) + { + Iterator<String> itor = this.user.getRoleNames().iterator(); + while (itor.hasNext()) + this.roles.add(new JAASRole((String)itor.next())); + } + } } public Subject getSubject () @@ -174,7 +181,6 @@ public abstract class AbstractLoginModule implements LoginModule */ public boolean commit() throws LoginException { - if (!isAuthenticated()) { currentUser = null; @@ -252,7 +258,10 @@ public abstract class AbstractLoginModule implements LoginModule setAuthenticated(currentUser.checkCredential(webCredential)); if (isAuthenticated()) + { + currentUser.fetchRoles(); return true; + } else throw new FailedLoginException(); } @@ -280,6 +289,7 @@ public abstract class AbstractLoginModule implements LoginModule public boolean logout() throws LoginException { this.currentUser.unsetJAASInfo(this.subject); + this.currentUser = null; return true; } |