package org.apereo.cas.digest; import org.apache.commons.lang3.StringUtils; import org.apereo.cas.authentication.AbstractAuthenticationHandler; import org.apereo.cas.authentication.Credential; import org.apereo.cas.authentication.DefaultHandlerResult; import org.apereo.cas.authentication.HandlerResult; import org.apereo.cas.authentication.PreventedException; import org.apereo.cas.authentication.principal.PrincipalFactory; import org.apereo.cas.services.ServicesManager; import javax.security.auth.login.FailedLoginException; import java.security.GeneralSecurityException; /** * This is {@link DigestAuthenticationHandler}. * * @author Misagh Moayyed * @since 5.0.0 */ public class DigestAuthenticationHandler extends AbstractAuthenticationHandler { public DigestAuthenticationHandler(final String name, final ServicesManager servicesManager, final PrincipalFactory principalFactory) { super(name, servicesManager, principalFactory, null); } @Override public HandlerResult authenticate(final Credential credential) throws GeneralSecurityException, PreventedException { final DigestCredential c = (DigestCredential) credential; if (StringUtils.isNotBlank(c.getId()) && StringUtils.isNotBlank(c.getHash())) { return new DefaultHandlerResult(this, c, this.principalFactory.createPrincipal(c.getId())); } throw new FailedLoginException("Could not authenticate " + c.getId()); } @Override public boolean supports(final Credential credential) { return credential instanceof DigestCredential; } }