package net.unicon.cas.addons.authentication.support; import org.jasig.cas.authentication.Authentication; import org.jasig.cas.authentication.principal.Principal; import org.jasig.cas.validation.Assertion; import java.util.List; /** * Convenience utility class containing static methods that operate on CAS server's <code>Assertion</code> instances for ease of retrieving * authenticated <code>Principal</code>s as well as chains of <code>Authentication</code> objects. * * @author Dmitriy Kopylenko * @author Unicon, inc. * @since 1.1 */ public final class Assertions { /** * Non-instantiable */ private Assertions() { } /** * Extracts an authenticated ${@link Principal} from a provided ${@link Assertion} instance. * <p/> * It is a caller's of this method responsibility to ensure that provided ${@link Assertion} instance is not null * to avoid NPE at runtime. * * @param assertion instance to retrieve ${@link Principal} from * @return Authenticated Principal * @throws NullPointerException if provided Assertion is <i>null</i> */ public static Principal getAuthenticatedPrincipalFrom(Assertion assertion) { final List<Authentication> chain = assertion.getChainedAuthentications(); final Principal principal = chain.get(chain.size() - 1).getPrincipal(); return principal; } /** * Extracts a list of proxy ${@link Authentication}s MINUS the original authenticated ${@link Principal} f * from a provided ${@link Assertion} instance. * <p/> * It is a caller's of this method responsibility to ensure that provided ${@link Assertion} instance is not null * to avoid NPE at runtime. * * @param assertion instance to retrieve a list of proxy ${@link Authentication}s from * @return A list of proxy authentications * @throws NullPointerException if provided Assertion is <i>null</i> */ public static List<Authentication> getProxyAuthenticationsFrom(Assertion assertion) { final List<Authentication> chain = assertion.getChainedAuthentications(); final List<Authentication> proxyAuthentications = chain.subList(0, chain.size()-1); return proxyAuthentications; } }