import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import org.springframework.security.providers.jaas.SecurityContextLoginModule;
import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import org.springframework.security.providers.jaas.SecurityContextLoginModule;
+/** Login module which caches one subject per thread. */
public class SpringLoginModule extends SecurityContextLoginModule {
private final static Log log = LogFactory.getLog(SpringLoginModule.class);
private AuthenticationManager authenticationManager;
public class SpringLoginModule extends SecurityContextLoginModule {
private final static Log log = LogFactory.getLog(SpringLoginModule.class);
private AuthenticationManager authenticationManager;
- private Subject subject;
+// private ThreadLocal<Subject> subject;
private CallbackHandler callbackHandler;
private CallbackHandler callbackHandler;
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
super.initialize(subject, callbackHandler, sharedState, options);
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map sharedState, Map options) {
super.initialize(subject, callbackHandler, sharedState, options);
- this.subject = subject;
+// this.subject.set(subject);
this.callbackHandler = callbackHandler;
}
this.callbackHandler = callbackHandler;
}
if (SecurityContextHolder.getContext().getAuthentication() != null)
return super.login();
if (SecurityContextHolder.getContext().getAuthentication() != null)
return super.login();
- if (subject.getPrincipals(Authentication.class).size() == 1) {
- registerAuthentication(subject.getPrincipals(Authentication.class)
- .iterator().next());
- return super.login();
- } else if (subject.getPrincipals(Authentication.class).size() > 1) {
- throw new LoginException(
- "Multiple Authentication principals not supported: "
- + subject.getPrincipals(Authentication.class));
- } else {
+// if (getSubject().getPrincipals(Authentication.class).size() == 1) {
+// registerAuthentication(getSubject()
+// .getPrincipals(Authentication.class).iterator().next());
+// return super.login();
+// } else if (getSubject().getPrincipals(Authentication.class).size() > 1) {
+// throw new LoginException(
+// "Multiple Authentication principals not supported: "
+// + getSubject().getPrincipals(Authentication.class));
+// } else {
// ask for username and password
Callback label = new TextOutputCallback(
TextOutputCallback.INFORMATION, "Required login");
// ask for username and password
Callback label = new TextOutputCallback(
TextOutputCallback.INFORMATION, "Required login");
Authentication authentication = authenticationManager
.authenticate(credentials);
registerAuthentication(authentication);
Authentication authentication = authenticationManager
.authenticate(credentials);
registerAuthentication(authentication);
+ boolean res = super.login();
+// if (log.isDebugEnabled())
+// log.debug("User " + username + " logged in");
+ return res;
} catch (BadCredentialsException bce) {
throw bce;
} catch (Exception e) {
} catch (BadCredentialsException bce) {
throw bce;
} catch (Exception e) {
loginException.initCause(e);
throw loginException;
}
loginException.initCause(e);
throw loginException;
}
}
@Override
public boolean logout() throws LoginException {
if (log.isDebugEnabled())
}
@Override
public boolean logout() throws LoginException {
if (log.isDebugEnabled())
- log.debug("Log out "
- + subject.getPrincipals().iterator().next().getName());
+ log.debug("Log out "+CurrentUser.getUsername());
this.authenticationManager = authenticationManager;
}
this.authenticationManager = authenticationManager;
}
+// protected Subject getSubject() {
+// return subject.get();
+// }
+