return false;
} else if (authenticationContext.getAttemptedFlow() == null) {
log.info("{} No attempted flow within authentication context", getLogPrefix());
ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_PROFILE_CTX);
return false;
log.debug("{} Request contains principal requirements, evaluating for compatibility", getLogPrefix());
for (final Principal p : rpCtx.getRequestedPrincipals()) {
final PrincipalEvalPredicateFactory factory =
final PrincipalEvalPredicate predicate = factory.getPredicate(p);
if (predicate.apply(this)) {
log.debug("{} Compatible with principal type '{}' and operator '{}'", getLogPrefix(),
p.getClass(), rpCtx.getOperator());
rpCtx.setMatchingPrincipal(predicate.getMatchingPrincipal());
return true;
} else {
log.debug("{} Not compatible with principal type '{}' and operator '{}'", getLogPrefix(),
p.getClass(), rpCtx.getOperator());
getLogPrefix(), p.getClass(), rpCtx.getOperator());
log.info("{} Skipping validator, not compatible with request's principal requirements", getLogPrefix());
ActionSupport.buildEvent(profileRequestContext, AuthnEventIds.REQUEST_UNSUPPORTED);
return false;
final String fixedEvent = authenticationContext.getFixedEventLookupStrategy().apply(profileRequestContext);
if (fixedEvent != null) {
log.info("{} Signaling fixed event: {}", getLogPrefix(), fixedEvent);