Esup Otp Shibboleth est un plugin de l'IdP Shibboleth.
Ce plugin est à utilisé au sein d'un login flow de type Multi-Facteur (MFA). Il permet d'appeler l'api REST esup-otp-api et fournir une interface de sélection du second facteur d'authentification.
| Plugin ID | Module(s) | Authentication Flow ID |
|---|---|---|
| fr.renater.shibboleth.esup.otp | idp.authn.EsupOtp | authn/EsupOtp |
- OpenJDK 21
- Maven 3.8 ou supérieur
./mvnw clean install -s resources/.m2/settings.xml -Dno-check-m2
Une fois la commande maven passée avec succès, le package du module se trouve dans le répertoire esup-otp-dist/target
Pour signer le plugin, il est nécessaire de posséder ou générer une paire clef privée/clef publique (par exemple avec gpg)
La clef publique devra être ajoutée au préalable du build dans le fichier esup-otp-dist/src/main/resources/bootstrap/keys.txt
La ligne de commande pour signer l'archive est la suivante :
gpg -u USER_A_REMPLACER -ab esup-otp-dist/target/idp-plugin-esup-otp-${version}.tar.gz
$ scp module.tar.gz username@server:/tmp/.
$ scp module.tar.gz.asc username@server:/tmp/.
$ ssh username@server -i ~/.ssh/id_rsa
[username@server ~]$ sudo -i
[username@server ~]$ export idp_install_path=/usr/share/shibboleth-idp
[username@server ~]$ cp /tmp/module.tar.gz $idp_install_path/plugins/.
[username@server ~]$ cp /tmp/module.tar.gz.asc $idp_install_path/plugins/.
A partir de la documentation Shibboleth MultiFactorAuthnConfiguration
[username@server ~]$ $idp_install_path/bin/module.sh -t idp.authn.MFA || $idp_install_path/bin/module.sh -e idp.authn.MFA
Vérification
[username@server ~]$ $idp_install_path/bin/module.sh -l
[username@server ~]$ $idp_install_path/bin/plugin.sh -i $idp_install_path/plugins/module.tar.gz --noCheck
Redémarrage du processus de l'IdP (tomcat, jetty...)
| property | required | Default value | Description |
|---|---|---|---|
| idp.esup.otp.apiHost | ✓ | Url de l'api esup-otp-api (https://esup-otp-api.univ.fr) | |
| idp.esup.otp.apiPassword | ✓ | ||
| idp.esup.otp.usersSecret | ✓ | ||
| idp.esup.otp.manager.link | ✓ | Url de l'application esup-otp-manager (https://esup-otp-manager.univ.fr/preferences) | |
| idp.esup.otp.username.strategy | ✓ | DefaultUsernameLookupStrategy | Stratégie du module pour récupérer l'identifiant pour appeler esup-otp-api (valeurs possible : DefaultUsernameLookupStrategy, SubjectContextUsernameLookupStrategy, AttributeContextUsernameLookupStrategy) |
| idp.esup.otp.attributeId | ✓ (si idp.esup.otp.username.strategy = AttributeContextUsernameLookupStrategy) | Attribut de l'IDP à utiliser comme identifiant de l'utilisateur courant (peut être un StringAttribute ou un ScopedStringAttribute) | |
| idp.esup.otp.issuer | ✓ | %{idp.entityID} | L'issuer correspondant au tenant pour esup-otp-api. |
| idp.esup.otp.supportedMethods | totp,webauthn,push,bypass,passcode_grid,random_code,random_code_mail | Liste des méthodes supportées pour le second facteur (doit matcher avec les méthodes retourné par esup-otp-api). | |
| idp.esup.otp.send.counter | 3 | Nombre maximum de renvoi possible d'un code (par SMS ou mail). -1, pas de limitiation. 0 désactivation | |
Pour activer les logs en DEBUG pour le pluging, il est nécessaire de modifier le fichier conf/logback.xml de l'IdP Par exemple :
<!-- Pour logger les appels vers esup-otp-api -->
<logger name="fr.renater.shibboleth.esup.otp" level="DEBUG" />
<!-- logs debug pour le plugin -->
<logger name="fr.renater.shibboleth.idp.plugin.authn.esup.otp.impl" level="DEBUG" />
Les fichiers de logs sont ceux de l'IdP :
- Fichier de log principal :
$idp_install_path/logs/idp-process.log - Fichier de log contenant uniquement les lignes d'avertissement et d'erreur :
$idp_install_path/logs/idp-warn.log
Il est possible de réaliser des tests en ligne de commande une fois le plugin installé sur l'IdP.
- Aide
[username@server ~]$ $idp_install_path/bin/esupotpauth.sh --help
- Lister tous les utilisateurs
[username@server ~]$ $idp_install_path/bin/esupotpauth.sh --home $idp_install --verbose --command all
Java 21, Spring framework 7, Lombok, Maven 3.8 (ou supérieur)
Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la licence publique générale GNU Affero telle que publiée par la Free Software Foundation ; soit la version 3 de la licence, soit (à votre gré) toute version ultérieure.