...
| Bloc de code | ||
|---|---|---|
| ||
import java.util.*
import org.apereo.cas.interrupt.InterruptResponse
def run(principal, attributes, service, registeredService, requestContext, logger, ... args) {
def ctx = org.apereo.cas.util.spring.ApplicationContextProvider.getApplicationContext()
def esupOtpService = ctx.getBean("esupOtpService")
def esupOtpUserInfos = esupOtpService.getUserInfos(principal.id)
def esupOtpMethods = esupOtpUserInfos.get("user").get("methods").toMap().values()
def oneMfaMethodIsActive = esupOtpMethods.stream().anyMatch { method ->
method instanceof Map && method.get("active")
}
if (!oneMfaMethodIsActive) {
def message = "Vous n'avez pas encore activé votre authentification renforcée avec ESUP-OTP, il serait souhaitable de le faire."
def links = ["Accéder à ESUP-OTP pour activer l'authentification renforcée" : "https://esup-otp-manager.univ-ville.fr/preferences"]
def block = false // L'utilisateur peut continuer sans activer le MFA
def ssoEnabled = false // On n’établit pas de session SSO tant qu’il n’a pas vu ce message
return new InterruptResponse(message, links, block, ssoEnabled)
}
return null
} |
...
Il interroge le service
esupOtpServicepour connaître les méthodes MFA activées de l’utilisateur.Si aucune méthode n’est active :
Il il affiche un message incitant à activer le MFA ; ce message est affiché dès la première authentification (TGT), mais aussi à chaque authentification sur chaque service (ST), ce grâce au
ssoEnabled valué à false.il Il fournit un lien vers l’interface de gestion des préférences MFA ;Il désactive le SSO
(
ssoEnabled = false) pour forcer l’affichage de ce message à chaque authentification tant que le MFA n’est pas activétout en lui permettant tout de même d'accéder au service demandé, ce grâce au block valué à false.
Si au moins une méthode est active, aucun message n’est affiché.
...