WARN [org.apereo.cas.web.flow.resolver.impl.InitialAuthenticationAttemptWebflowEventResolver] - <Cannot invoke method debug() on null object>
WARN [org.apereo.cas.web.flow.resolver.impl.InitialAuthenticationAttemptWebflowEventResolver] - <Cannot invoke method debug() on null object>
Multi group selection works just need to debug/log anything under getMultifactorAuthenticationProviders and do some more customization/troubleshooting
Sample so far (there are more import than probably needed but not sure which helps)
--------------------------- groovy file ----------------------------------------
import java.util.*
import org.apereo.inspektr.common.web.*;
import org.apereo.cas.services.*;
import org.apereo.cas.authentication.principal.*;
import org.springframework.webflow.execution.RequestContext;
import org.apereo.cas.web.support.WebUtils;
// Thought it provided LOGGER object
import org.slf4j.Logger;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apereo.cas.authentication.AuthenticationHandlerResolver;
import org.apereo.cas.authentication.Authentication;
import org.apereo.cas.authentication.Credential;
import org.apereo.cas.authentication.MultifactorAuthenticationCredential;
class GroovyMultifactorPolicy extends DefaultRegisteredServiceMultifactorPolicy {
String mfaGroupPattern = "cn=something";
@Override
Set<String> getMultifactorAuthenticationProviders() {
final Authentication authentication = WebUtils.getInProgressAuthentication();
final String A = authentication.getPrincipal().getId();
// STUCK POINT
logger.debug "MFA USER Section"
/* ******* IF someone has a sample code that works and fits this idea also it is greatly appreciated,
def memberOf = authentication.principal.attributes['memberOf'];
for (String group : memberOf) {
if (group.contains(mfaGroupPattern)) {
return "mfa-yubikey";
}
// and other checks
}
********** */
// default if above fails
["mfa-gauth"];
}
@Override
RegisteredServiceMultifactorPolicy.FailureModes getFailureMode() {
// RegisteredServiceMultifactorPolicy.FailureModes.OPEN
RegisteredServiceMultifactorPolicy.FailureModes.PHANTOM;
}
@Override
String getPrincipalAttributeNameTrigger() {
"groupMembership";
// "Test"
}
@Override
String getPrincipalAttributeValueToMatch() {
// "(groupA|groupB)";
"(cn=groupA,ou=....,o=..|cn=groupB,ou=...,o=...)";
// "TestMatch"
}
@Override
boolean isBypassEnabled() {
// true
false;
}
}
Many thanks for your time in looking at this.