...
| 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 && !service.id.startsWith("https://esup-otp-manager.example.org/") {
def message = "Vous n'avez pas encore activé votre authentification renforcée avec ESUP-OTP, il serait souhaitable de le faire."
def links = ["AccéderApplication à ESUP-OTP pour activer l'authentification renforcée" : "https://esup-otp-manager.univ-villeexample.frorg/preferences"]
def block = false
def ssoEnabled = false
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 et que le service désiré n'est pas esup-otp-manager :
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 fournit un lien vers l’interface de gestion des préférences MFA esup-otp-manager ;
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é.
...