Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java40
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;
}

Back to the top