package jeffaschenk.commons.container.security.object;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import java.util.Collection;
/**
*
* Authentication Token Object
*
* @author jeffaschenk@gmail.com
* Date: Jun 3, 2010
* Time: 6:31:05 AM
*/
public class AuthenticationToken extends UsernamePasswordAuthenticationToken {
private static final long serialVersionUID = 1109L;
/**
* SecuritySessionUserObject
* <p/>
*/
private SecuritySessionUserObject securitySessionUserObject;
/**
* Default Constructor
* Used within <code>SecurityServiceProviderImpl</code> Authentication Method.
*
* @param principal - Object can be a simple String to an Service Provider Object.
* @param securitySessionUserObject
*
*/
public AuthenticationToken(Object principal,
SecuritySessionUserObject securitySessionUserObject) {
super(principal, securitySessionUserObject.getPassword());
this.securitySessionUserObject = securitySessionUserObject;
}
/**
* Default Constructor
* Used within <code>SecurityServiceProviderImpl</code> Authentication Method.
*
* @param principal - Object can be a simple String to an Service Provider Object.
* @param authorities
* @param securitySessionUserObject
*
*/
public AuthenticationToken(Object principal,
Collection<? extends GrantedAuthority> authorities,
SecuritySessionUserObject securitySessionUserObject) {
super(principal, securitySessionUserObject.getPassword(), authorities);
this.securitySessionUserObject = securitySessionUserObject;
}
/**
* Obtain the Security Session User Object
*
* @return SecuritySessionUserObject
*/
public SecuritySessionUserObject getSecuritySessionUserObject() {
return securitySessionUserObject;
}
/**
* Get Details, Overridden to Obtain
*
* @return Object Representing securitySessionUserObject
*/
@Override
public Object getDetails() {
return securitySessionUserObject;
}
@Override
public void eraseCredentials() {
super.eraseCredentials();
this.securitySessionUserObject.setPassword(null);
}
@Override
public String getName() {
return this.getPrincipal().toString();
}
}