package org.apereo.cas.authentication; import org.apereo.cas.authentication.metadata.BaseAuthenticationMetadataPopulator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This is {@link SurrogateAuthenticationMetadataPopulator}. * * @author Misagh Moayyed * @since 5.1.0 */ public class SurrogateAuthenticationMetadataPopulator extends BaseAuthenticationMetadataPopulator { /** * Surrogate username attribute in the authentication payload. */ public static final String AUTHENTICATION_ATTR_SURROGATE_USER = "surrogateUser"; /** * Original credential attribute in the authentication payload. */ public static final String AUTHENTICATION_ATTR_SURROGATE_CREDENTIAL = "surrogateCredential"; private static final Logger LOGGER = LoggerFactory.getLogger(SurrogateAuthenticationMetadataPopulator.class); @Override public void populateAttributes(final AuthenticationBuilder builder, final AuthenticationTransaction transaction) { final SurrogateUsernamePasswordCredential current = SurrogateUsernamePasswordCredential.class.cast(transaction.getCredential()); LOGGER.debug("Recording surrogate username [{}] as an authentication attribute", current.getSurrogateUsername()); builder.addAttribute(AUTHENTICATION_ATTR_SURROGATE_USER, current.getSurrogateUsername()); builder.addAttribute(AUTHENTICATION_ATTR_SURROGATE_CREDENTIAL, current.getId()); } @Override public boolean supports(final Credential credential) { return credential != null && SurrogateUsernamePasswordCredential.class.isAssignableFrom(credential.getClass()); } }