...
Bloc de code |
---|
import java.util.* class SampleGroovyEventResolver { def String run(service, registeredService, authentication, httpRequest, logger, ... other_args) { def mobile = authentication.principal.attributes.mobile def ip = httpRequest.getRemoteAddr() def memberOf = authentication.principal.attributes.memberOf /* logger.info("ip : [{}]", httpRequest.getRemoteAddr()) logger.info("mobile : [{}]", mobile) logger.info("registeredService.id : [{}]", registeredService.id) */ // d'abord les services avec MFA obligatoire if ((int)registeredService.id in [22] && 'cn=from.grouper.admin,ou=groups,dc=univ-rouen,dc=fr' in memberOf) { logger.warn("mfa required for grouper !", authentication.principal.id) return "mfa-esupotp" } // maintenant les services avec MFA uniquement si activé if(!('cn=from.cas.otp,ou=groups,dc=univ-rouen,dc=fr' in memberOf)) { // l'utilisateur n'a pas activé le MFA (fonctionne grâce à un groupe LDAP reflétant l'activation du MFA dans esup-otp-manager) return null; } if ((int)registeredService.id in [12,13,14,18,21,22] && !ip.startsWith("10.0.1.")) { logger.warn("mfa for [{}] !", authentication.principal.id) return "mfa-esupotp" } if ((int)registeredService.id in [11, 18] && !ip.startsWith("10.0.1.") && 'cn=for.multipass.admin,ou=groups,dc=univ-rouen,dc=fr' in memberOf) { logger.warn("mfa for [{}] !", authentication.principal.id) return "mfa-esupotp" } return null } } |
...