| Remarque |
|---|
Disponible dans la branche master d'depuis esup-smussmsu-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).4.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=smsuApiApereoCasAccount
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
}
} |