...
Remarque |
---|
Disponible dans la branche master d'esup-smus-api sur github, cette possibilité sera effectivement présente dans la prochaine version d'esup-smsu-api (la version qui suit la 3.0.0). Côté CAS, nous avons testé et validé le bon fonctionnement de l'ensemble avec un CAS version 6.0.8 |
Un serveur Apereo CAS peut utiliser ESUP-SMSU-API pour envoyer des SMS.
...
La mise en place de cette possibilité implique de positionner dans le fichier de configuration CAS cas.properties les choses suivantes :
Bloc de code |
---|
# Récupération du numéro de mobile depuis ldap pour le mfa-simple au travers duquel on utilise ESUP-SMSU ... cas.authn.attributeRepository.ldap[0].attributes.mobile = mobile ... ############################## ## ESUP-SMSU ## ############################## cas.smsProvider.rest.url=http://smsu-api.univ-ville.fr/apereo-cas cas.smsProvider.rest.basicAuthUsername=smsuApiApereoCasSccount cas.smsProvider.rest.basicAuthPassword=motDePasse ############################## ## MFA ## ############################## cas.authn.mfa.globalFailureMode=OPEN cas.authn.mfa.groovyScript=file:/etc/cas/config/mfaGroovyTrigger.groovy cas.authn.mfa.simple.name=smsu cas.authn.mfa.simple.order=0 cas.authn.mfa.simple.timeToKillInSeconds=300 cas.authn.mfa.simple.sms.from=Université EsupPortail cas.authn.mfa.simple.sms.text=Bonjour, voici le code SMS requis pour votre authentification CAS : %s cas.authn.mfa.simple.sms.attributeName=mobile |
Ne pas oublier de mettre dans le build.gradle de CAS :
Bloc de code |
---|
compile "org.apereo.cas:cas-server-support-simple-mfa:${project.'cas.version'}" |
Confère la ligne 'cas.authn.mfa.groovyScript=file:/etc/cas/config/mfaGroovyTrigger.groovy' on décide ici d'activer le MFA via un script groovy, c'est ce qui parait le plus souple à réaliser ici.
Les modifications sur le script sont pris en compte immédiatement.
Le paramètre 'cas.authn.mfa.globalFailureMode=OPEN' indique que si un problème survient autour du MFA, l'authentification est validée simplement.
Un exemple d'un tel script est donnée dans la documentation CAS, on en donne ici un autre :
Bloc de code | ||
---|---|---|
| ||
import java.util.*
class SampleGroovyEventResolver {
def String run(final Object... args) {
def service = args[0]
def registeredService = args[1]
def authentication = args[2]
def httpRequest = args[3]
def logger = args[4]
def mobile = authentication.principal.attributes.mobile
logger.info("ip : [{}]", httpRequest.getRemoteAddr())
logger.info("mobile : [{}]", mobile)
logger.warn("registeredService.id : [{}]", registeredService.id)
// 10, 11 et 12 des ids de service spécifiques sur lesquels on souhaite faire du MFA pour ceux :
// * qui sont à lextérieur de l'université (adresse IP extérieure)
// * et ont un numéro de mobile d'informé dans le ldap
if ((int)registeredService.id in [10, 11, 12] && !httpRequest.getRemoteAddr().startsWith("10.") && mobile!=null && mobile.size()>0 && mobile.get(0).startsWith("0")) {
logger.warn("mfa for [{}] !", authentication.principal.id)
return "mfa-simple"
}
return null
}
} |